C:三元运算符在将一个表达式留空时给出错误

时间:2013-02-23 04:09:40

标签: c

我试图使用一些使用三元语句的代码来运行特定的部分,但是,当我这样做时,我收到警告:

expression result unused

该特定部分的代码无法运行。

这种情况下的代码是:

i != a ?: printf("|%*s\\\n", i, "");

为什么会这样?根据{{​​3}},这种形式的三元运算符,除了案例之外别无选择,应该起作用,但是,它在这里简单地跳过它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您的代码等同于

(i != a) ? (i != a) : printf(...);

请注意,您最终不会使用i != a结果,因此会出现警告。最好将其写为if语句:

if(i==a) printf(...);