【发布时间】:2020-08-16 21:45:59
【问题描述】:
我有一个非常基本的疑问。我正在尝试将任何无效的十六进制数存储在 int 变量中。无效数字是指使用不在A-F 范围内的字母的数字。例如看这个程序:
#include<stdio.h>
int main()
{
int a;
scanf("%X",&a);
printf("%d",a);
return 0;
}
当控制台要求输入时,我输入了G。它的输出为63。它只是未定义的行为还是这个输出背后有一些逻辑。对于大多数此类输入,输出为63。目前正在研究 GCC。
【问题讨论】:
-
scanf("%X",&a);==>if (scanf("%X", &a) != 1) exit(EXIT_FAILURE); -
试试
int a = 12345;,看看a会发生什么。 -
@chux - 这次恢复 Monica Ya,如果我输入任何无效的十六进制数字,它会打印
12345,否则它会打印十六进制数字的小数。