【发布时间】:2019-11-09 12:55:29
【问题描述】:
我对 C 比较陌生,我正在尝试编写一个简单的代码来检查一年是否是闰年。 这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int year;
printf("%s","Please enter a year: ");
scanf("%d",&year);
char leapYear[] = ((year % 4) == 0) ? ((year / 100 % 4)==0 ? "y": "n"):"n" ;
printf("%s", leapYear);
}
我收到一个无效的初始化程序错误,我不知道为什么。
【问题讨论】:
-
初始化程序必须是在编译时计算的常量表达式。你的不是一个恒定的表达。使用:
char leapYear[2]; leapYear= ... -
@PaulOgilvie:不,它不需要是一个常量表达式。具有静态或线程存储持续时间的对象的初始化程序需要是常量表达式或字符串文字(C 2018 6.7.9 4)。
leapYear具有自动存储期限。而char leapYear[2]; leapYear= ...将不起作用,因为数组不可分配。 -
@EricPostpischil,弗拉德的好回答!没听懂。
标签: c arrays initialization implicit-conversion