#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来自哪里?
答案 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