这个语句将如何在c中执行条件操作?
how will this statement execute conditional operation in c?
我有条件运算符的语句,但我不知道它是如何工作的。
有两个问题:
问题 1:下面的语句会做什么:
quotient=(b==0)?0:(a/b) \ here a,b,quotient is integer
问题二:前面的语句可以这样写吗?
quotient=(b)?(a/b):0;
现在我的问题是:
问题:1 ::我们不知道b的值那么我们如何检查这个条件(b==0)
问题2:: (b) 表示什么?
C 三元条件运算符中的条件检查是与非零的隐式比较。
换句话说
quotient = b ? a / b: 0;
与
相同
quotient = b != 0 ? a / b : 0;
还是荒谬的
quotient = (b != 0) != 0 ? a / b : 0;
这在整个 C 中是一致的,例如在 if
、for
停止条件下,while
、&&
、||
、&c.
如果你尝试
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)
C本来就没有布尔类型。条件语句只是 C 中的 int
值。0 为假,任何其他值为真。如果 b
的类型是 int
,或者它可以隐式转换为 int
,那么 (b) ? foo : bar
和 (b == 0) ? bar : foo
做同样的事情。 (但是,b==0
将计算为 1 或 0,而 b
本身可能具有其他非零值,if
或 ?
认为它们是真实的。)
我有条件运算符的语句,但我不知道它是如何工作的。 有两个问题:
问题 1:下面的语句会做什么:
quotient=(b==0)?0:(a/b) \ here a,b,quotient is integer
问题二:前面的语句可以这样写吗?
quotient=(b)?(a/b):0;
现在我的问题是:
问题:1 ::我们不知道b的值那么我们如何检查这个条件(b==0)
问题2:: (b) 表示什么?
C 三元条件运算符中的条件检查是与非零的隐式比较。
换句话说
quotient = b ? a / b: 0;
与
相同quotient = b != 0 ? a / b : 0;
还是荒谬的
quotient = (b != 0) != 0 ? a / b : 0;
这在整个 C 中是一致的,例如在 if
、for
停止条件下,while
、&&
、||
、&c.
如果你尝试
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)
C本来就没有布尔类型。条件语句只是 C 中的 int
值。0 为假,任何其他值为真。如果 b
的类型是 int
,或者它可以隐式转换为 int
,那么 (b) ? foo : bar
和 (b == 0) ? bar : foo
做同样的事情。 (但是,b==0
将计算为 1 或 0,而 b
本身可能具有其他非零值,if
或 ?
认为它们是真实的。)