我可以在C中使用三元运算符为字符串赋值吗?

时间:2018-07-30 14:06:30

标签: c string initialization ternary-operator

我需要将字符串分配给a,然后使用%s打印。如果运行以下代码,则会收到一条错误消息,内容为Invalid Initializer。有没有一种方法可以正确执行而不使用switch/caseif/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");

1 个答案:

答案 0 :(得分:0)

“我需要将字符串分配给a,然后使用%s进行打印。”

您不是在进行分配,而是在进行初始化。不,由于不幸的传统原因,您不能使用表达式来初始化整个数组。

此外,数组甚至无法分配。不,这是不可能的。但是,由于只需要使用"%s"打印它,就可以使用指向<{> {1}} 的指针。

char