if(scanf("%d",&year)==1)的意思

#include <stdio.h>

void main()
{
int year;

if(scanf("%d",&year)==1)
{
if(year%4==0 && (year%100!=0 || year%400==0))
printf("%d is a leap year\n",year);
else
printf("%d is not a leap year\n",year);
}
else
printf("Error\n");
getch();
}

  scanf函数也是有返回值的,它返回的是正确输入到变量的个数。 这句话就是说,没有正确输入一个整型数给n。

  scanf函数与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

  函数 scanf() 是从标准输入流stdio (标准输入设备,一般是键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

  其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。

  返回值:

  scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。

  如:

  1

  

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

  

  如果a和b都被成功读入,那么scanf的返回值就是2

  如果只有a被成功读入,返回值为1

  如果a和b都未被成功读入,返回值为0

  如果遇到错误或遇到end of file,返回值为EOF。

  且返回值为int型.

  &a,&b,&c中的&是地址运算符,&a指a在内存中的地址。scanf的作用是:按照a,b,c的内存地址将输入的数据存到a,b,c中去。变量a,b,c的地址是在编译连续阶段分配的(存储顺序由编译器决定)。

  这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以加逗号,只能是空格或tab键或者回车键——“2 3 4” 或 “2(按tab)3(按tab)4(按tab)”。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-21
scanf("%d",&year)如果内存(这里既&year)成功获取了一个整数类别的数字则返回1 否则返回0
if(scanf("%d",&year)==1) 即是判断你是否成功输入了年份追问

if(scanf("%d",&year)==1)为什么把==1去掉对结果无影响。在Win-TC中

追答

if(scanf("%d",&year))默认 如果scanf("%d",&year)返回1则if括号内内容调用成功 if语句返回true

本回答被提问者采纳