我有这段代码来检查第二个日期是否早于第一个日期。当我用这个顺序输入时,程序正常工作,没有逗号9,92021,但当我为第一个输入输入09时,它跳过第二个输入,直接跳到第三个输入,我不明白为什么会出现这种情况,因为我对C 还很陌生
#include <stdio.h>
// Array format [DD,MM,YYYY]
int date[3];
int secondDate[3];
// ANSI color codes
#define RED "x1b[31m"
#define GREEN "x1b[32m"
int main()
{
printf("Enter the day of first date: ");
scanf("%i", &date[0]);
printf("Enter the month of first date: ");
scanf("%i", &date[1]);
printf("Enter the year of first date: ");
scanf("%i", &date[2]);
printf("Enter the day of the second date: ");
scanf("%i", &secondDate[0]);
printf("Enter the month of the second date: ");
scanf("%i", &secondDate[1]);
printf("Enter the year of the second date: ");
scanf("%i", &secondDate[2]);
return 0;
}
%i
形式说明符识别数字基前缀(即"0x"
表示十六进制,'0'
表示八进制)。'0'
前缀表示八进制。并且09
是无效的八进制,因为八进制数包含数字0-7
。
您可以使用%d
说明符,而不是仅解释十进制数的%i
。