正确使用转换说明符n

时间:2019-09-22 10:25:18

标签: c

当我使用输入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;
}

1 个答案:

答案 0 :(得分:3)

scanf %x说明符读取一个十六进制整数,该整数是(这是关键点) 可选地以0x或0X开头 ! (请参见here。)

您的第二个示例未给x赋予实际值(或者,对于0x之后的空白输入,可能给它零)!尝试使用1F0F作为输入测试。

PS:32765的值看起来像是来自-1的语音转换。