我需要将字符串分配给a
,然后使用%s
打印它。如果我运行以下代码,我会收到一条错误消息:Invalid Initializer
。有没有一种方法可以在不使用 switch/case
或 if/else
的情况下正确执行此操作?
char a[25] = ((ws < 1) ? "Calm" :
(ws >= 1) && ws < 4) ? "Light Air" :
(ws >= 4 && ws <= 27) ? "Breeze" :
(ws >= 28 && ws <= 47) ? "Gale":
(ws >= 48 && ws <= 63) ? "Storm" : "Hurricane");
最佳答案
“我需要将字符串分配给 a,然后使用 %s 打印它。”
您不是在进行赋值,而是在进行初始化。不,您不能使用表达式来初始化整个数组,这是由于不幸的遗留原因。
此外,数组甚至不可分配。不,这是不可能的。但是,由于您只需要使用 "%s"
打印它,因此您可以使用char
的指针。
char *a = ((ws < 1) ? "Calm" :
(ws >= 1) && ws < 4) ? "Light Air" :
(ws >= 4 && ws <= 27) ? "Breeze" :
(ws >= 28 && ws <= 47) ? "Gale":
(ws >= 48 && ws <= 63) ? "Storm" : "Hurricane");
printf("Wind level: %s\n", a);
关于我可以在 C 中使用三元运算符为字符串赋值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51595840/