1樓:
這要用到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++中,字元和整型是一樣的,可以隱式轉換
2樓:匿名使用者
int型和char型的長度不一樣。int佔4個位元組而char只佔一個位元組(大小視系統而定的),所以char轉int沒問題,反過來就可能出錯了
字母有對應的的ascii碼,所以a = b - '0'就是通過ascii碼轉換為數字的
int型也可以直接賦值給char型,同樣是按照ascii碼來的,但由於int長度比char長,因此超過範圍則轉換出來的值可能是不定的(根據編譯器不同而不同),所以一般最好不要這麼轉換
3樓:匿名使用者
目前絕大多數編譯器,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; 。
4樓:牽牛散步
第一,int型和char型的長度不一樣。int佔4個位元組而char只佔一個位元組。
第二,char型可以直接賦值給int型,值的大小是char字元對應的ascii碼值,例如: b = 'a'; a = b; 則a的值應該是97。
第三,int型也可以直接賦值給char型,同樣是按照ascii碼來的,但由於int長度比char長,因此只有在int的值處在ascii碼範圍內的時候轉換後的值才是有意義的,如果超過範圍則轉換出來的值可能是不定的(根據編譯器不同而不同),在vc6下是0
5樓:
首先你要清楚,在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進位制
6樓:匿名使用者
a=b-'0' 得到的數字是 0和b 兩個字母的機器**的差別, 不是數學意義上的數字.
另外int是兩個byte, char是一個. 也無法直接轉換.
想轉換字母和數字的話你可以試試系統程式 ctoi() 和 itoc()
7樓:徐良軍
在c++中,int轉換為char稱為隱式轉換,char轉換為int稱為顯式轉換。隱式轉換可直接轉換,顯示轉換則要強制性轉換,故b=a,可直接賦值,強制性轉換則要指明轉換型別,如:a=(int)b;
8樓:匿名使用者
轉換其實是對應的ascii碼來顯示的。比如char c=『a』; int i= c;
那麼i=65;是a對應的ascii碼。又比如 c = char(65);那麼c就是a;
9樓:踏岸尋柳
直接賦值即可,無須轉換。
在c++中char型別的陣列裡邊裝的是數字,如何轉換為int型別?
10樓:會飛的小兔子
cha和rint陣列轉換,例:
inti[2]=
charc[2]=
兩者轉換**:
inta[2]=;
charc[2];
for(inti=0;i<2;i++)c[i]=a[i];
int是將一個數值向下取整為最接近的整數的函式,為取整函式。
擴充套件資料char*、string、cstring這三種字串型別各有各的優點,比如cstring比較靈活,是基於mfc常用的型別,安全性也最高,但可移植性最差。string是使用stl時必不可少的型別,所以是做工程時必須熟練掌握的;char*是從學習c語言開始就已經和我們形影不離的了,有許多api都是以char*作為引數輸入的。
char*型別:是字元指標,在一定條件下等同於字元陣列,如果字元陣列的最後元素是"\0",則是一個c風格的字串。
11樓:匿名使用者
在標頭檔案中新增
#include
#include
void main()
{char *s;
int n;
s="1234";
n=atoi(s);
cout<:1234
標頭檔案中新增#include
用 x=atof(s)可轉化為double型,用(float)x可轉為float型
12樓:匿名使用者
#include
void main()
//用int()也可以換的方便
13樓:匿名使用者
char str="10";
int num=strtol(str,null,10);
其中,把10換成16可以
獲得16進位制數(即num=16),換成其他數字,可以獲得其他進位制的數(如換成8的話,n=8)
14樓:匿名使用者
#include
#include
#include
using namespace std;
template
t lexical_cast(u u)
int main()
15樓:匿名使用者
char dd[n];//設陣列的長度是nint ee[n];
for(int i=0;i 你程式 邏輯bai 有問題。dustrlen是求字串zhi長,字串必須以 0 結束,你的字dao符沒有回以這個字元結束,因此求答得的結果是不確定的。不一定是16。下面,給你一個正確的例子了。char a a new char 10 a 0 a a 1 b a 2 0 int temp strlen ... char資料型別與數值型別的整型是互通的,他們在記憶體中儲存的本質是相同的,只是儲存的範圍不同。char資料型別佔1個儲存位元組,整型可佔2 4 8位元組。資料型別指的是資料的儲存方式,包括所佔記憶體空間的大小,取值範圍及其可進行的操作等。數值型別指的是表示數量 可以進行數值運算的資料型別。在c語言... char 型就是 一位元組長度 的整型。計算機內部,無所謂16,10,8,2進位制值,一律是2進位制。你可以直接把它當 十進位制值 用於運算。例如 dh 0x07 dl 7 x dh 8 dl 下面例子,混合運算。include main 得 33 0x100 1 對計算機來說,某一個變數不管是ch...c 問題關於char的動態分配記憶體
char資料型別與數值型別之間的轉換什麼是資料型別?什麼是數值型別
C語言的問題,char型輸出的16進位制數值怎麼輸出十進位制值來