无论输入什么,答案是67,为什么?

时间:2017-02-26 14:50:59

标签: c stdio

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a;
    scanf("%*2s",&a);
    printf("%d\n",a);
    return 0;
}

输出:

1351 (input to scanf)
67 (output from printf)

无论我给出什么输入,答案总是67. 67来自哪里?

4 个答案:

答案 0 :(得分:2)

从用户用户获取int值:

int a;
scanf("%d",&a);

scanf使用不同的说明符:

%d整数

%f Float

%d double

%c char

答案 1 :(得分:1)

在上面的程序中,scanf()读取但由于*格式说明符而未分配值。结果,无论a的值(未初始化)是由printf()产生的输出。在这种情况下,67是垃圾值。

答案 2 :(得分:0)

*告诉scanf读入但忽略输入。看看http://www.cplusplus.com/reference/cstdio/scanf/。为什么它总是打印67你可能需要单步执行调试器来查看int的初始化以及更改方式。

答案 3 :(得分:-1)

为各自的数据类型使用正确的格式说明符

float          %f
double         %lf
int            %d or %i
unsigned int   %u
char           %c
char *         %s
long int       %ld
long long int  %lld