[英]Can anyone explain the output for scanned value of the following program..?
#include<stdio.h>
int main()
{
int i;
printf("%d\n", scanf("%d", &i) );
return 0;
}
如果将某些值提供给scanf()
,则程序的输出仍为1。为什么?
如果提供了scanf某些值,但是程序的输出仍然为1。为什么?
因为scanf
根据文档返回int
。 scanf
将返回已成功扫描和分配的项目总数。
在您的情况下,如果成功从stdin
扫描int
, scanf
将返回1,否则将返回0。遇到EOF
它还将返回-1
。 然后,此值由您拥有的printf
打印。
如果要打印i
的值,请将scanf
和printf
分开,即使用
int i;
scanf("%d", &i)
printf("%d\n", i);
代替
int i;
printf("%d\n" , scanf("%d", &i) );
在下面的语句中,
printf("%d\n" , scanf("%d", &i) );
您不是要打印scanf()
扫描和存储的值,而是要打印scanf()
的返回值 。
由scanf()
扫描的值将存储在提供的参数中,此处为变量i
。
记住, scanf()
不返回 扫描值 ,它返回成功匹配并分配的项目数 。
如果要打印扫描的值,则必须使用存储值的相同变量,即i
。
printf("The scanned value is %d\n", i);
也就是说,需要注意的是, main()
的推荐签名是int main(void)
。
的返回类型scanf()
是参数列表中的项目成功filled.In你的情况下,一个项目的数量正在读因此,如果成功1
将返回scanf()
类似以下内容将返回2
,因为有被读取两个项目。
int i,j;
printf("%d\n" , scanf("%d %d", &i,&j) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.