【发布时间】:2013-03-26 06:01:41
【问题描述】:
这就是代码
void main()
{
unsigned char n,t;
scanf("%hhu %hhu",&n,&t);
printf("%hhu %hhu",n,t);
}
问题是当我分别输入 5 和 1 时,输出是 0 和 1。n 为 0,t 为 1。但是,当我将类型从 char 更改为 int/unsigned 时,输出是正确的:5 和 1。
问题是为什么用 char 请求(数字)输入会给出无效值?
【问题讨论】:
-
你想用这个实现什么?
scanf期待unsigned char*带有这些格式字符串,这是有意的吗? -
示例程序没有给出你为我描述的错误输出(Ubuntu 12.04 上的 gcc)
-
请问您在哪个平台上遇到过这种行为?
-
@bash.d (CMIIW) 除了存储一个字符,char可以用来存储1个字节的数字(-127..128 or 0..255 ) 正确的?我只是为了好玩而尝试它,然后我对错误感到好奇
-
好的!给你