在||
行中带有 OR 运算符(return
)的某些代码中使用。有人可以解释那是什么吗?
这里看起来像这样:
int main()
{
...
return (1 || 0);
}
但是实际上它是一个函数(返回1或0),而不是1和0:
int main()
{
...
return (foo(x++, y) || foo(x, y++));
}
答案 0 :(得分:2)
a || b
如果a
不为零,则与b
的值无关,结果为1;如果a
为0,而b
为,则结果为1。非零,否则为0。
所以1 || 0
是1
,2 || 0
也是如此。
请注意,如果b
非零,则不会对a
进行求值:因此,如果b
是一个函数,则不会在这样的情况下调用它:案件。因此,在您的示例中,如果foo(x, y++)
非零,则y++
被不称为包括对foo(x++, y)
的求值。
请注意,a || b
的类型是int
,与参数的类型无关。 cf.类型为bool
的C ++。
答案 1 :(得分:1)
逻辑或具有short circuit property。仅当LHS评估为false时,才评估RHS。
在这种情况下,由于操作数是函数调用,所以
foo(x++, y)
。1
。foo(x, y++)
函数调用,并且返回值将基于函数调用的返回值。