1樓:
這主要是由於不同資料型別在記憶體中所佔的二進位制位數不同造成的
一般情況下int佔32位記憶體空間,char只佔8位
我想你的原意應該是int a=-32768;char ch; ch=a;吧
注意這個a他是一個負數,那麼記憶體中存的應該是a的補碼,正數的補碼就是他的原值,負數補碼應該等於他去掉負號後的值的反碼加1.這也是為什麼-1在記憶體中各二進位制位全是1的原因
好了,我們來看記憶體中a的各位是多少:
32768:0000 0000 0000 0000 1000 0000 0000 0000
-32768 1111 1111 1111 1111 0111 1111 1111 1111 +1
變成了:1111 1111 1111 1111 1000 0000 0000 0000
低8位全是0,好了,給ch賦值,他就是0
2樓:匿名使用者
其實,ch與a的資料結構不同,在由int轉換成char時,在你輸出ch,如果是執行「printf("%u",ch)」,那輸出的自然是0(因為,這是無符號輸出,而a=-32768是有符號的);或者是,a=-32768,在轉換為char時出錯,因為char的範圍是0-256.,而a=-32768已經超出他的範圍,所以在轉換時,ch=0,這個0,不是代表數字,而是「假」。
要是說對了,望採納哈,謝謝了
3樓:匿名使用者
int是宣告整型,char是字元型,你int a=-32768就是說16位儲存單元裡全部是1,而在整型資料裡最高一位代表正負型,負號最高位為1,字元型資料是以補碼的形式存放,在a裡為1111111111111111,在輸出ch時必然要將補碼再度取補碼,即0000000000000000,所以得到ch=0.
4樓:匿名使用者
整型int 能表示的最大範圍是 -32768~32767 其中表示-32768的位模式是 1000000000000000佔用16位兩個byte
ch是佔用一個byte(8位)
也就是說int的太大了……而擷取後只能是那樣的0 了所以賦值的時候擷取後面的低8位結果為0
unsigned char ch=-4; int a; a=ch; 請問a的值是0xfffc嗎
5樓:風若遠去何人留
是的按照實際值
如果是char ch=-4
那麼就不是0xfffc了 而是0xfffffffffffffffc也就是真值-4
while(ch=getchar()=='a'); 輸入字元a後,ch的值為什麼是0?求解答
6樓:匿名使用者
== 判斷符號的優先順序比 = 高 所以先判斷 相等返回1不等返回0 ch就被賦值了 ==判斷後的結果
char ch=『a』;這個表示式中a代表的數值是多少
7樓:孫永超
char字元型
'a'字元常量,ascii碼可查表,為97char ch='a';
printf("%c",ch);輸出a
printf("%d",ch);輸出97
8樓:匿名使用者
十進位制:97
十六進位制:61
9樓:滄海雄風
a的 ascii碼97
c語言中char ch=0;與char ch='0';與char ch='\0';的意思是什麼????
10樓:風若遠去何人留
char ch=0; ch的值就是0
char ch='0'; ch的值是字元'0'的ascii碼值,即0x30
char ch='\0'; \0是轉義字元,其值為ascii碼0, 也就是說 這個和第一種的ch = 0是一樣的。
在列印時,字串結束符\0屬於不可顯示字元,所以螢幕上會什麼都沒有。
如果你用的是%d 你就能看出區別了
設ch是char型變數,值為'a',則下面表示式的值是 ch=(ch>='a'&&ch<'z')?(ch-'a'+'a'):ch
11樓:匿名使用者
? : 是c中三目運算子,對?前的表示式求解,如果真,則返回:前的值,否則返回:後的值。
這句話的意思是,
if(ch>='a'&&ch<'z) ch=ch-'a'+'a';
else ch=ch;
因為ch='a';所以表示式為真,則ch=ch-'a'+'a';
字元在內容中是以ascii儲存的,所以和int型一樣支援基本運算,所以ch='a'-'a'+'a';
最終ch='a';
main() { char ch; ch='h'-'a'+'0'; printf("%c\n",ch); }
12樓:謝謝你
# include
void main()
執行結果:
7press any key to continue原理:字元做加減運算就是做相應的字元所對應的 ascii 碼值的運算, 'h' 對應的ascii碼值為 104
'a' 對應的ascii碼值為 97
'0' 對應的ascii碼值為 32
'7' 對應的ascii碼值為 39
所以:39 =104 - 97 + 32
所以最後輸入的字元為: '7'
13樓:小丑俠肉
h 是72 a是65 0是48 所以72-65+48=55//55對應字元7
14樓:匿名使用者
#include
int main()
for (i = 0 ; i < 10; i++)}
15樓:匿名使用者
謝謝你177 的回答是對的
16樓:匿名使用者
你就放一段**,想表達啥呢?
辣條是怎麼做出來的呢?辣條是怎麼做出來的嗎
簡單的要命。先把切好的麵條油炸一下,撈上來以後往上面撒一些辣椒沫,孜然,鹽,味精,白糖。記得和麵的時候要把面和的筋一點。保證你吃的時候和外面賣的一樣,而且還非常衛生,安全。市面上的手工辣條都是怎麼做出來的?辣條,又名辣片,麻辣條,辣椒條,辣子條,豆腐皮,麻辣,辣皮子。主要原料為麵粉,加入水,鹽,糖,...
仙人雞是怎麼做出來的
母雞750克,鮮仙人掌125克。將仙人掌去刺切片 母雞宰殺 去毛及內臟,洗淨 把仙人掌片置入雞腹腔內,用文火隔水燉至熟爛,揀去仙人掌即可。飲湯食雞肉 花鳥魚蟲生活什麼意思 就是生活中充滿了花鳥魚蟲的生活 一般是指退休了的人,閒來無事不需要忙的意思每天可以種種花,養養鳥,或者是蟲子 有耐心的人,還可以...
請問耐火土是怎麼做出來的
科勒耐火土 耐火土的胚料配方與普通陶瓷的配方有所不同,其燒結溫度要高於陶瓷 而在胚料與釉料之間所加的化妝土使燒製成的產品釉面比普通陶瓷表面更柔和,光潤。粘土質耐火土 1 特性及用途 粘土質耐火磚屬弱酸性耐火材料,其熱穩定性好,適應於熱風爐,各種鍋爐內襯,及煙道 煙室等。2 產品規格形式 標準形 普異...