-3

我试图在 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 正在返回垃圾值。帮助。

4

1 回答 1

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.

于 2018-04-16T17:37:58.313 回答