if(leap) 这样判断会被自动转化成一个Boolean量来进行流程的控制,会转化成 true and false 两个量
而你说的leap == 1 则只是单纯的恒值的比较。
简单的来说,如果leap = 5,在if(leap){} 这个式子中是成立的,为true而在if( leap == 1){} 则是为假的。
写程序思维要求比较严谨。追问例如这个程序:
#include
main()
{
int year,leap;
printf("please input year:");
scanf("%d",&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else leap=0;
}else leap=1;
}else leap=0;
if(leap)
printf("%d is a leap year",year);
else printf("%d is not a leap year",year);
}
里面的1改为任何非0值,程序都会照常进行这是为什么