C中的逻辑AND三元运算符

时间:2018-04-16 17:25:04

标签: c ternary-operator logical-operators logical-and

我试图在C中找到3个整数(var1,var2,var3)的最大值和最小值。为了让事情变得有点兴趣,我正在用1行编写逻辑。

(var1>var2)?((var1>var3)?(max=var1):(max=var3)&&(min=var2)):((var2>var3)?(max=var2):(max=var3)&&(min=var1));

为了简化调试,这里有几行无聊的版本

(var1>var2)?
    ((var1>var3)?
        (max=var1):
        (max=var3)&&(min=var2)
    ):
    ((var2>var3)?
     (max=var2):
     (max=var3)&&(min=var1)
    );

逻辑AND未执行,min返回垃圾值。 帮助

1 个答案:

答案 0 :(得分:1)

看看无聊的版本:

(var1>var2)?
    ((var1>var3)?
        (max=var1): // nothing gets assigned to min
        (max=var3)&&(min=var2) // nothing gets assigned to min, if var3==0
    ):
    ((var2>var3)?
     (max=var2): // nothing gets assigned to min
     (max=var3)&&(min=var1) // nothing gets assigned to min, if var3==0
    );

您可以看到,在许多情况下,没有任何内容被分配给min