【发布时间】:2014-07-22 18:36:53
【问题描述】:
如果我将像 20,30,10000...9999 这样的整数读入变量 a 会发生什么?它只打印我读过的数字中的第一个数字......这是为什么呢? 例如,如果我阅读 123,它会在屏幕上打印 1。难道不应该将整数 123 转换为等效的 ASCII 字符表示吗?
#include <stdio.h>
int main() {
char a;
scanf("%c", &a);
printf("%c", a);
return 0;
}
这是一道 C 语言考试题。
【问题讨论】:
-
scanf("%c", &a);从stdin读取char。当用户键入“1”、“2”、“3”回车时,4 个char被赋予程序:'1'、'2'、'3'、'\n'。对于键盘,用户通常只输入文本,而不是整数。像scanf("%c", &a);这样的函数读取一个char。int d; scanf("%d", &d);将读取文本并将该文本转换为int。 -
谢谢!这很有帮助
-
也千万不要做
char ch; scanf("%d", (int*)&ch);!!!它将在 ch 位置写入sizeof(int)字节,覆盖(破坏)附近的其他变量。我曾经遇到过一个相关的错误。