1樓:芳華熊貓
其實所有運算都是針對記憶體進行運算,char型是以ascii碼對應儲存在記憶體中的,比如字元a的ascii碼是97,那它和int 97沒差別,但有些字元是不可見的比如換行符、回車符、製表符等等。這個具體可以參考ascii碼表。
比如說,你用波浪號 ~ (ascii碼值126)對68取餘數,你會得到冒號 (ascii碼值58)。它和數字58 沒區別,看你輸出時候把它作為什麼輸出的。作為%d輸出,就是58。
作為%c輸出,就是冒號。
一般情況下,取餘數函式預設輸出是整數型,所以你會看到是數字,你可以把它強制作為字元型輸出的話就能理解了。
#include
int main()
//輸出結果如下
char [:] , int [58].
2樓:
char型數字在記憶體中是以它的ascii碼的形式存放的,字元'0'的ascii碼值是48,char型資料可以
參與到算術運算中,它參與運算的值是它的ascii值,而不是字元本身的值。
3樓:聽不清啊
因為求餘運算的兩個運算元,都得是int型。所以所得的餘數也是int型。
c語言中,怎樣把內容為數字的char轉換為int?
4樓:盍荷孛友靈
本質上char型別和int其實是同一種型別。。。都代表了整數型大小,轉換的話,在前面加上強制轉換符就好了,如int()之類的
5樓:匿名使用者
內容為數復字的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);
即可實現效果。
6樓:匿名使用者
atoi是將數字的char*字元bai串轉化為duint型
將數字的char轉換為int,直接輸出zhiint格式的char型就dao
行,或者a-'0',ine和內char是可以根據ascii碼進行隱容式轉換的
ascii碼表
7樓:西門**
x = (int)(unsigned char)c;
c語言中char變數為字元型,為什麼可以取取值為數字?如unsigned char a=3
8樓:匿名使用者
字元型也是資料,只是佔用1個位元組,取值在-128~127之間而已
無符號字元型取值是0~255
9樓:程式設計大王
3轉成了unsigned char*。可以看3在ascii對應的值是什麼東西
10樓:我喜歡看火影
首先你要明白,在計算機的世界裡,只有高低電頻吧。可以理解為,也就是只有二進位製數010101。。。,所以無論是什麼,儲存在計算機裡,都是01的組合。
比如,char a = 'c',這個'c',儲存在計算機裡也是乙個01的組合,而不是乙個『c』的圖案。
而比如,unsigned char a='a';實際上存在計算機裡是乙個數字65,即01000001
所以,你要理解清楚,字元型,本質就是數字,而不是字元。
unsigned char a='a';與unsigned char a=65;等價。
實際上都是a==01000001.如果你以字元格式%c輸出,則輸出為a,如果以十進位制%d輸出,則為65,如果以%x十六進位制輸出,則。。。等。
至於為什麼65對應的是a那就是ascii表啦。人為制定的咯。
c語言把char轉換成int
11樓:匿名使用者
'0x04';確實不對,第一,用單引號,不是乙個陣列,說是字串也不對,c裡面字串不用第一號。單引號只能用在乙個字元的身上。
轉化的話,其實連強制轉都不用
char c = 'a';
int a = c;
或者你列印的時候用:printf("%d",c);
就直接是十進位制數字了
12樓:摩羯眼睛會勾魂
直接用強制型別轉換就行了比如
char c ='0x04';
int i =(int)c;
13樓:雲亭潘靖柔
內容為數字的char,包含
0,1,2,3,4,5,6,7,8,9
共計10個字元。
這十個字元在存為字元型時,其儲存值為對應的ascii碼,而這些ascii碼是連續的,且按照其本身數字的大小來排列。
這樣就可以將字元值,減去起始ascii碼值實現轉為對應值的效果。
c語言char型字串轉換成int型字串
14樓:很路人
char是字元型別,你想讓他已int型別輸出,只會輸出他的ascii
15樓:匿名使用者
就是用int型別存放char型的ascii碼。例如你說的char buf[128]="abc";int abc[128];
for(i=0;buf[i]!='\0';i++)
abc[i]=buf[i]-null;
16樓:馮老師(必果學院
可以使用強制型別轉換,示例**如下:
char buf="abc";
int tmp = *(int*)buf;
printf("%s",(char*)&tmp);//輸出看看字串有沒有丟失或錯誤
但是這樣轉換有乙個限制,就是只能對不超過4個位元組的字串進行轉換因為int型別預設都是4個位元組,只能放入4個字元如果需要大批量的轉換,則需要用memcpy,示例**如下:
char buf="abc123";
int tmp[2];//6個字串需要2個int來儲存memcpy(tmp,buf,strlen(buf)+1);
printf("%s",(char*)tmp);//輸出看看字串有沒有丟失或錯誤
但是這樣並沒有什麼優勢,位元組在記憶體中佔用的大小並沒有變化
17樓:匿名使用者
你想用乙個數字來儲存 字串麼??
用ascii碼,每個字元本身都是乙個數字,例如 buf[0] = 'a';
'a'在ascii碼表中代表的數字是97,以此類推,任何字元都可以表示出來,包括中文
18樓:匿名使用者
如果想你想的那樣還定義字元型和整形有什麼意義,這樣定義就是因為字元型是用ascll碼形式存放的,所以同樣的數字字元型是字母的形式輸出,整形是數字形式輸出。有所區分
19樓:疾風殘噬者藍寧
#include "stdlib.h" /* 先包含標頭檔案 */
char a =105; int b;
b=atoi(a); /* 再轉換char成int */
在c語言中怎麼把int型的數放在乙個char陣列裡面
20樓:匿名使用者
char是8 位、int是32位。。。。。。所以要4個char就可以儲存乙個int。。。。。最好是使用unsigned char
使用移位法,不難的~~~~
c語言。取餘運算子 %兩邊的數字型別相同就行還是必須都是整型?
21樓:會飛的小兔子
必須是整形。
除法運算子「/」。二元運算子,具有左結合性。參與運算的量均為整型時,結果為整型,捨去小數。如果運算量中有乙個為實型,結果為雙精度實型。
例如:5/2=2,1/2=0
5/2.0=2.5
擴充套件資料求餘運算子「%」,二元運算子,具有左結合性。參與運算的量均為整型。求餘運算的結果等於兩個數相除後的餘數。
例如:5%2=1,1%2=1
5%2.0和5.0%2的結果是語法錯誤
**當前面的數小於後面的數時
其實求餘運算可以看成
a%b=a-(int)(a/b)*b
1%2=1
2%5=2
a%b如果a
22樓:與子如初見
你好,取模運算子兩邊必須是整型數,不能為實型。這是規定的!如果使用實型就會出錯,編譯都過不了。
c語言中char是什麼意思,c語言中char是什麼意思
char取自英語character 字元 的縮寫。char是c語言的關鍵字,是一種資料型別,也是最小整型型別。作用是定義字元型變數。乙個char字元佔8位。c語言中char 是什麼意思?char 是宣告一 個字元型別的指標。比如 chat y 就是宣告乙個指標y,這個指標指向的位址上只能存放字元型別...
C 語言程式設計求除以2餘1,除以3餘2,除以4餘3,除以5餘4,除以7餘5的最小自然數
include int main include void main printf d sum getchar 除以2餘1,除以3餘2,除以4餘3,除以5餘4,除以6餘5,除以7餘6,除以8餘7,是多少 加1能被2 3 4 5 6 7 8整除 即被5 6 7 8整除 最小是840 1 839 老師給...
c語言整除怎樣表示,在C語言中取整,求餘的符號各是什麼?
我覺得整除就是餘數為0,不過取餘 的兩邊都是整數,你就m n 0,即可,我是這麼認為的 include int main 在 c語言中 取整 求餘的符號各是什麼?如果運算元是整數,那麼就是整除,否則就是浮點除,求餘的符號是 1 通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數...