布尔表达式+短路

时间:2019-04-05 14:10:44

标签: c debugging

我想打印一个带有布尔表达式+短路评估的消息(不允许我使用if / while / for),但是在C-Lion中一切正常,但是在其他编译器中它说:

hw2q1.c: In function 'decision':
hw2q1.c:38:55: error: value computed is not used [-Werror=unused-value]
|
^
S
  

我该如何解决此警告?

我在C-Lion中尝试过,但似乎没有问题。

void decision(int DragonA,int DragonB,int DragonC) {

         (DragonA == 1 && print_dragonX_sent('A') )   ||
         (DragonB == 1 && print_dragonX_sent('B') )   ||
         (DragonC == 1 && print_dragonX_sent('C') )   ||
         (print_no_dragon());
}

1 个答案:

答案 0 :(得分:3)

您的功能基本上很好。我希望兼容的C编译器会接受它。

但是,看来您正在使用编译器选项,这些选项拒绝会引发任何类型诊断的代码,即使该代码通常只是非致命的警告。它正在诊断的特定问题是您计算了一个值,然后让它不使用。 C允许这样做,但有时会因错误而出现,因此可能需要警告。

通常可以通过将有问题的值强制转换为类型void来满足警告特定问题的编译器的要求。这可以视为告诉编译器您确实确实要忽略该值。例如:

    (void) (
        (DragonA == 1 && print_dragonX_sent('A')) ||
        (DragonB == 1 && print_dragonX_sent('B')) ||
        (DragonC == 1 && print_dragonX_sent('C')) ||
        print_no_dragon()
    );