该语句将如何在c中执行条件运算?

时间:2018-07-20 08:17:25

标签: c operators conditional-operator

我有条件运算符的语句,我也不知道它是如何工作的。 有两个问题:

问题1:以下语句将做什么:

 quotient=(b==0)?0:(a/b) \\ here a,b,quotient is integer

问题2:前面的陈述可以写成如下吗?

 quotient=(b)?(a/b):0;

现在我的问题是:

问题:1 :: 我们不知道b的值,那么如何检查此条件(b == 0)

问题2 :: (b)代表什么?

3 个答案:

答案 0 :(得分:3)

C三元条件运算符中的条件检查是对非零的隐式比较。

换句话说

quotient = b ? a / b: 0;

相同
quotient = b != 0 ?  a / b : 0;

还是荒谬的

quotient = (b != 0) != 0 ?  a / b : 0;

这在整个C中都是一致的,例如在iffor停止条件,while&&||等情况下。

答案 1 :(得分:1)

如果您尝试

int b = 0;
if (b) {
   printf("Hello World");
}

在以下时间不打印任何内容:

int b = 1;
if (b) {
    printf("Hello World");
}

打印Hello World。为什么呢因为0为假,1为真。

如果您执行quotient=(b)?(a/b):0;,则会被解释为is b true ?或换句话说,就是is b evaluated to 1(同时,1 is true and 0 is false

答案 2 :(得分:1)

C最初没有布尔类型。条件只是C中的int值。0为false,其他任何值为true。如果b的类型为int,或者它可以隐式转换为int,则(b) ? foo : bar的作用与(b == 0) ? bar : foo相同。 (但是,b==0的取值为1或0,而b本身可能还有其他的非零值,而if?认为是真实的。)