leap==1则为闰年,其他情况为非闰年,但是执行的时候为什么非闰年也表示为闰年呢

#include<stdio.h>
int main()
{
	int year, leap;
	printf("Please input a year:\n");
	scanf_s("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		leap = 1;
	printf("leap=%d", leap);
	if (leap==1)
		printf("%d is a leap year!",year);
	else
		printf("%d is not a leap year!", year);

	return 0;
}

执行结果如下:

leap没有初始化,如果if判断不成立,那么leap就没有赋值

#include<stdio.h>

int main()

{

	int year, leap=-1;

	printf("Please input a year:\n");

	scanf_s("%d", &year);

	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

		leap = 1;

	printf("leap=%d", leap);

	if (leap==1)

		printf("%d is a leap year!",year);

	else

		printf("%d is not a leap year!", year);

 

	return 0;

}

 

int year, leap;

改成
int year, leap=0;