C語言為什麼char型數字求餘得到的是int型數字

2022-04-06 13:16:49 字數 4573 閱讀 6154

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 運算被混為一談,因為在大多數...