繁体   English   中英

谁能解释以下程序的扫描值输出?

[英]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扫描intscanf将返回1,否则将返回0。遇到EOF它还将返回-1 然后,此值由您拥有的printf打印。


如果要打印i的值,请将scanfprintf分开,即使用

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM