我有条件运算符的语句,我也不知道它是如何工作的。 有两个问题:
问题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)代表什么?
答案 0 :(得分:3)
C三元条件运算符中的条件检查是对非零的隐式比较。
换句话说
quotient = b ? a / b: 0;
与
相同quotient = b != 0 ? a / b : 0;
还是荒谬的
quotient = (b != 0) != 0 ? a / b : 0;
这在整个C中都是一致的,例如在if
,for
停止条件,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
或?
认为是真实的。)