我只是無法得到它。 Char是一個整數,對不對?所以我可以做scanf並保留字符作爲整數
int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].
爲什麼那麼wrog做:
char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]
我只是無法得到它。 Char是一個整數,對不對?所以我可以做scanf並保留字符作爲整數
int var;
scanf("%d", &var);
I:[65]
printf("%c", var);
o:[A].
爲什麼那麼wrog做:
char var;
scanf("%d", &var);
I:[A]
printf("%d", var)
O:[-1236778]
在第二scanf()
scanf("%d", &var);
的scanf()
解析的打印指令%d
。這意味着參數&var
預計爲int
的地址。而是給出了一個char
的地址。 int
的尺寸肯定大於char
的尺寸。由於scanf()
試圖將一個int
大小的數據放到一個僅用於'char'的地方,所以對於scanf()可能會發生奇怪的事情,可能會將數據放在它不應該放置的地方。試圖將10磅粉紅土豆放入5磅大袋中。
此外 - scanf("%d", &var);
成功讀取輸入「A」似乎令人懷疑。 scanf()
會看到A
,並且由於它不是數字,因此會放棄掃描符合int
定義的文本輸入。因此,您的scanf("%d", &var)
可能返回的值爲0
,因此沒有任何東西在var
中。如果保存了培根,它會將數據放在它不應該放置的空間中。
最終printf("%d", var)
然後簡單地打印出其從未設定var
,使您得到任何恰好是焦炭。 -1236778
似乎不太可能。我懷疑這個帖子與代碼和輸入/輸出不匹配的速度都很小。
因爲'%d'需要一個'int *',而不是'char *'? –
但字符保持爲整數? – zubergu
'char' **是一個整型數據類型,但是**並不意味着它與'int'相同。 –