当我使用输入1X
运行下面的程序时,它显示1 2
,但是当输入为0X
时,它显示0 32765
而不是0 2
。怎么会来?
#include <stdio.h>
int main(void)
{
unsigned int x;
int charCount, matchCount;
matchCount = scanf("%xX%n", &x, &charCount);
if (matchCount == 1) {
printf("%u %d\n", x, charCount);
}
return 0;
}
答案 0 :(得分:3)
scanf
%x
说明符读取一个十六进制整数,该整数是(这是关键点) 可选地以0x或0X开头 ! (请参见here。)
您的第二个示例未给x
赋予实际值(或者,对于0x
之后的空白输入,可能给它零)!尝试使用1F
和0F
作为输入测试。
PS:32765
的值看起来像是来自-1
的语音转换。