為何在c 中要將char型的變數以數的形式輸出需要將其強制轉換成int型的,而微控制器中不用

2021-04-01 16:10:32 字數 5164 閱讀 2718

1樓:玻璃麥田

任何變數在記憶體中的儲存都是二進位制數。

在輸出的時候,

c++中,cout<< 輸出一個char型變數預設就是字串。要輸出數字需要強制轉換。

在c中,printf,是格式化輸出,對於一個char型變數,%c輸出字串,%d輸出其ascii碼值,不需要強制轉換。

2樓:匿名使用者

如果用cout輸出需要轉換, 用printf不用的.

因為cout會自己判斷變數的型別, 然後根據型別來決定如何輸出

c++輸入一個char字元,將字元強制型別轉換為int型,為什麼輸出的會是它的ascii碼

3樓:

1.你說的是ascii碼吧2.輸入字元轉化為ascii是什麼意思?ascii碼本身就是一系列字元,你說的是ascii碼值麼?3.要將ascii碼進行哪種運算後輸出?

提示一下,單個ascii字元是可以強制轉換為int的。

4樓:我愛李春霞

當然是這樣的,因為你把字元變數a轉換為了整型,也當然就是她所對應的

ascii碼了

c++中char型別變數如何轉換成int型別變數?

5樓:

在ascii碼中數字'0'-'9'的編碼是48 - 57,所以你減一個'0',或者減一個48都可以。

6樓:匿名使用者

從 char 到 int 屬於「從短到長」的轉換,而從 int 到 char 則為「從長到短」的轉換。

短到長時,系統會自動提升,會將1個位元組的char型別資料擴充到4個位元組(32位系統),對於無符號型別來說,只將int的最低位元組複製為char的值,其餘三個位元組都為0。

長到短時,只將int的最低位元組的內容複製到char型別的變數,三個高位位元組被忽略,這在編譯時會給出警告,但通過強制型別轉換則可以避免警告出現,如 char ch = (char)intvar。

7樓:匿名使用者

char str_tmp;

int int_tmp;

str_tmp='5';

int_tmp=(int)(str_tmp - '0');

cout<

8樓:

用函式斯stoi()就行。

int_tmp=stoi(str_tmp);

9樓:百度使用者

int_tmp=str_tmp-48;

10樓:匿名使用者

int atoi( const char *string );

c++中的int和char之間的轉換問題

11樓:

這要用到ascii碼的知識,粗略講一下

字元'0'的ascii碼為

48,然後是'1' '2' '3' ... '9'

字元' '(空格)的ascii碼為32.

字元'a'的ascii碼為65,然後是'b' 'c' ... 'z'

字元'a'的ascii碼為97,然後是'b' 'c' ... 'z'

所以,把一個數字字元ch,轉為一個整數,就是ch-'0'當然ch-48也行

因為c和c++中,字元和整型是一樣的,可以隱式轉換

12樓:匿名使用者

int型和char型的長度不一樣。int佔4個位元組而char只佔一個位元組(大小視系統而定的),所以char轉int沒問題,反過來就可能出錯了

字母有對應的的ascii碼,所以a = b - '0'就是通過ascii碼轉換為數字的

int型也可以直接賦值給char型,同樣是按照ascii碼來的,但由於int長度比char長,因此超過範圍則轉換出來的值可能是不定的(根據編譯器不同而不同),所以一般最好不要這麼轉換

13樓:匿名使用者

目前絕大多數編譯器,int 型資料佔 4 位元組, char 型佔 1 位元組。進行不同資料的強制轉換其實就是資料佔用位元組擴充或者截斷。

比如int a;

char b;

a=(int)b;

b=(char)a;

由 b 轉換成 int 型資料就是將 b 擴充 3 個位元組;而將 a 轉換成 char 型資料就是將 a 的最低位位元組擷取出來。因此,將資料由值域較寬型別強制轉換到值域較窄型別時,有可能出現資料資訊丟失。

你說的轉換錯誤其實不然,因為 char 型資料在機器裡通過 ascii 碼儲存,也就是用一個整數儲存的。譬如字元 ' 0 ',對應的 ascii 碼的十進位制數 是 48,因此強制轉換成 int 後,是 48,而不是 0 。要想將字元 '0' 轉換成整數 '0',就要使用你所說的 a = b - '0'; 或者 a = b - 48; 。

14樓:牽牛散步

第一,int型和char型的長度不一樣。int佔4個位元組而char只佔一個位元組。

第二,char型可以直接賦值給int型,值的大小是char字元對應的ascii碼值,例如: b = 'a'; a = b; 則a的值應該是97。

第三,int型也可以直接賦值給char型,同樣是按照ascii碼來的,但由於int長度比char長,因此只有在int的值處在ascii碼範圍內的時候轉換後的值才是有意義的,如果超過範圍則轉換出來的值可能是不定的(根據編譯器不同而不同),在vc6下是0

15樓:

首先你要清楚,在c++中int型佔4個位元組,而char型別

只佔1個位元組,char型別是可以轉化為int型別的,但int型別不一定可以轉換為char型別。

我對你這個問題的理解是,你想將0到9之間的數字轉化為char型別的,或是將'0'-'9'之間的字元轉化為int型的數字。

你如果要用強制轉換的話可以這樣:(0的ascii碼是48)

int a;

char b;

a=(int)(b-48);或b=(char)(a+48);

//這樣轉化的前提是a的範圍是0-9,b的範圍是'0'-'9'

在實際運用中,在整型和字元型之間轉化用得較多的應該要算int型與char *型別之間的轉化了。這個時候可以用atoi(字元型轉整型,可以分開理解a to i)和itoa(整型轉字元型,i to a),如:

int a=11111

char* b="33333";

a=atoi(b);//將整型轉化為字串

或itoa(a,b,10);//將字串轉化為整型,最後一個引數是進位制,在這裡是10進位制

16樓:匿名使用者

a=b-'0' 得到的數字是 0和b 兩個字母的機器**的差別, 不是數學意義上的數字.

另外int是兩個byte, char是一個. 也無法直接轉換.

想轉換字母和數字的話你可以試試系統程式 ctoi() 和 itoc()

17樓:徐良軍

在c++中,int轉換為char稱為隱式轉換,char轉換為int稱為顯式轉換。隱式轉換可直接轉換,顯示轉換則要強制性轉換,故b=a,可直接賦值,強制性轉換則要指明轉換型別,如:a=(int)b;

18樓:匿名使用者

轉換其實是對應的ascii碼來顯示的。比如char c=『a』; int i= c;

那麼i=65;是a對應的ascii碼。又比如 c = char(65);那麼c就是a;

19樓:踏岸尋柳

直接賦值即可,無須轉換。

c語言中,怎樣把內容為數字的char轉換為int?

20樓:盍荷孛友靈

本質上char型別和int其實是同一種型別。。。都代表了整數型大小,轉換的話,在前面加上強制轉換符就好了,如int()之類的

21樓:匿名使用者

內容為數復字的char,包含

0,1,2,3,4,5,6,7,8,9

共計10個字元

制。這十個字元在bai存為字元型時,其儲存du值為對應的ascii碼,而這

zhi些ascii碼是連續的,且按照dao其本身數字的大小來排列。

這樣就可以將字元值,減去起始ascii碼值實現轉為對應值的效果。

設int a; //轉換的目標變數。

char c = '7'; //要轉換的字元。

c = a - '0';

這樣得到的就是對應的值了,即c = 7。

如果在檔案中需要多次該操作,則可以定義一個帶參巨集,如下:

#define chartonumber(x) (x-'0')這樣只需要呼叫

c = chartonumber(a);

即可實現效果。

22樓:匿名使用者

atoi是將數字的char*字元bai串轉化為duint型

將數字的char轉換為int,直接輸出zhiint格式的char型就dao

行,或者a-'0',ine和內char是可以根據ascii碼進行隱容式轉換的

ascii碼錶

23樓:西門**

x = (int)(unsigned char)c;

c++中將char轉換為int型

24樓:匿名使用者

char c;

int a;

如果a=int(c);a的值為字元的ascii碼,如果a=c-『0』;a的值就是字元所代表的阿拉伯數字

25樓:人民幣9葘

你的問題可以有兩個理解:

理解一、你是想把int型的變數強制轉換為char型的變數嗎?很簡單在變數前加強制轉換運算子就可以了。例程:

int a=1;

char c=(char)a; //把a強制轉換為char型賦給變數c

理解二、你是想把1轉換為字元『1』吧?在ascii編碼表中,字元『0』~『9』是順序編碼的,所以用相應的值加上字元『0』的編碼,就是那個值的ascii碼了。例程:

int a=1;

char c=a+'0'; //c的值就是'1'的ascii碼值

26樓:匿名使用者

用強行轉換不行嗎??

c 中char型別變數如何轉換成int型別變數

在ascii碼中數字 0 9 的編碼是48 57,所以你減一個 0 或者減一個48都可以。從 char 到 int 屬於 從短到長 的轉換,而從 int 到 char 則為 從長到短 的轉換。短到長時,系統會自動提升,會將1個位元組的char型別資料擴充到4個位元組 32位系統 對於無符號型別來說,...

char轉成int,在c 中char型別的陣列裡邊裝的是數字,如何轉換為int型別?

孤傲。12 07 10 15 08 09 52 54那是因為一個整數佔4個位元組,一個char只佔一個位元組,當int轉char時,會選擇int的低四位來付給char,而現在257在記憶體中為10000000 00000000 00000001 00000001把最後的00000001付給了char...

如何在c和c 中判斷變數是否為空

c c 中,任何一個變數在定義後即擁有自身的記憶體空間,而記憶體空間中是一定有值的,所以不存在絕對意義上的空值。一般來說,判斷空值都是判斷定以後,是否被賦值過,所以只需要判斷變數值是否還是初始值即可。區分變數型別,有一些常用的初始化情況 1 指標型別。指標型別一般被初始化為null,這是一個定義在標...