酷!學園

技術討論區 => 程式討論版 => C/C++程式設計討論區 => 主題作者是: qui 於 2014-01-24 14:04

主題: 請問變數char讀入整數的問題
作者: qui2014-01-24 14:04
請問以下程式:
代碼: [選擇]
#include <stdio.h>
int main(void) {
char a, b;

scanf("%d", &a);
printf("%d\n", a);

scanf("%d", &b);
printf("%d, %d\n", a, b);

return 0;
}

當我輸入1 1的時候,發現輸出的結果變成0 1
用記憶體工具看了一下,發現輸入b的時候會把a原本的值覆蓋過去
想請教有沒有能夠輸入一個整數、存到一個字元變數之中,又不會影響到其他記憶體的方法? ???

謝謝! :)
主題: Re: 請問變數char讀入整數的問題
作者: elleryq2014-01-24 15:57
1. 應該用 int a, b;
代碼: [選擇]
int i=0;
scanf("%d\n", &i);

2. 可以用轉型把 int 塞到 char 裡,例如
代碼: [選擇]
char c;
int i=1;
c = (char)i;
printf("0x%02x\n", c);
主題: Re: 請問變數char讀入整數的問題
作者: zelda2014-01-28 02:37
這算是溢位問題了吧
原po宣告的變數只佔用1byte
但是存進去是用4byte

從節省記憶體空間觀點來看
我是想不到有什麼解法啦

話說一開始,我還看不出問題點,我還太嫩了 :-[