0

当我输入一个字母时,我的 C 程序给出了数字“32767”,但是当我输入一个整数时,它会告诉我输入的数字。

为什么我的程序不会告诉我输入了什么字母?为什么它给我数字“32767”?

#include <stdio.h>

main()
{
    int number;

    printf("Enter an integer\n");
    scanf("%d",&number);

    printf("Integer entered by you is %d\n", number);

    return 0;
}
4

3 回答 3

2

如果scanf没有找到它正在寻找的东西(在这种情况下是 an int),它将简单地返回而不修改传入的任何内容。换句话说,scanf不会更改number,因此它将具有它的旧值,在这个case, 是未定义的(因为它没有被初始化)。

于 2013-07-31T23:38:00.343 回答
0

您所看到的是“未定义的行为”,这几乎意味着“任何事情都可能发生”。特别是中的值number可以具有任何值,因为它还没有被初始化。如果您对其进行初始化,int number = 42;它将(可能) print 42,但我不确定是否可以保证。

于 2013-07-31T23:39:10.230 回答
0

如果要printf()显示字符并scanf()获取该数据,则必须指出它是一个字符,使用“char”而不是“int”并使用"%c"而不是"%d".

像这样的东西(我仍然使用“数字”变量和printf()关于“整数”的描述:

#include <stdio.h>

main()
{
    char number;

    printf("Enter an integer\n");
    scanf("%c",&number);

    printf("Integer entered by you is %c\n", number);

    return 0;
}
于 2021-09-18T22:48:36.200 回答