作者 主題: 請問變數char讀入整數的問題  (閱讀 1279 次)

0 會員 與 1 訪客 正在閱讀本文。

qui

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
請問變數char讀入整數的問題
« 於: 2014-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原本的值覆蓋過去
想請教有沒有能夠輸入一個整數、存到一個字元變數之中,又不會影響到其他記憶體的方法? ???

謝謝! :)

elleryq

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
Re: 請問變數char讀入整數的問題
« 回覆 #1 於: 2014-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);
Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org

zelda

  • 憂鬱的高中生
  • ***
  • 文章數: 92
    • 檢視個人資料
Re: 請問變數char讀入整數的問題
« 回覆 #2 於: 2014-01-28 02:37 »
這算是溢位問題了吧
原po宣告的變數只佔用1byte
但是存進去是用4byte

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

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