如果C尝试扫描整数变量中的字符会发生什么

use*_*230 1 c unix initialization scanf

所以我想知道如果用户在整数变量中输入字符会发生什么,例如:

main()
{

    int number;

    printf("Print a number:");
    scanf(" %d", &number);
    printf("The result is:%d", number);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我键入字符,结果是:1986895412

这是1986895412在公羊的一个地方吗?

rai*_*7ow 7

在这种情况下,scanf指令失败.引用这个答案(基本上改写了规范的定义):

%d转换说明符期望输入文本格式化为十进制整数.如果不是,则转换失败,导致转换失败的字符将保留在输入流中.

因此,number保留与指令之前的值相同.由于你没有用一些定义的值(比如int number = 0)初始化它,它只是一些随机的垃圾值.在你的情况下碰巧等于1986895412.