当我执行以下代码时:
#include <stdio.h>
int main(void) {
int i=10;
printf("%d",i,scanf("%d",&i));
return 0;
}
我得到的输出是用户输入
而
int main(void) {
int i=10;
printf("%d",scanf("%d",&i),i);
return 0;
}
如果用户输入正确,则输出为1(表示整数类型)。 为什么每次执行scanf并且在任何情况下输出都不是10?
答案 0 :(得分:1)
在为printf提供两个参数时,只显示一个数字,因此忽略第二个数字。
在第一种情况下,你只显示i,但它被scanf修改(我相信这实际上是未定义的,我可以在调用scanf之前进行评估)。
在第二种情况下,显示成功分配的项目数(1)。
答案 1 :(得分:1)
如果您的目标是打印用户输入的号码,请先拨打scanf()
,然后拨打printf()
。不要把一个嵌套在另一个里面。
int i;
scanf("%d",&i);
printf("%d",i);
答案 2 :(得分:1)
printf中的参数数量不匹配
更改
printf("%d",scanf("%d",&i),i);
要
printf("return value of scanf: %d, i: %d",scanf("%d",&i),i);
答案 3 :(得分:0)
您的程序调用未定义的行为。 scanf()
返回成功阅读的项目数
您在printf()
中仅使用一个格式说明符来表示两个int
个参数。
答案 4 :(得分:0)
您必须将printf参数的数量与输出格式化程序的数量相匹配,否则会发生奇怪的事情。