我需要知道C++中这句话的解释
我正在为BL0937编辑一个库,它使用能源监控参数,为了简单起见,我使用了一个b。
b = (c > 5) ? a/c/2 : 0;发布于 2019-04-08 11:47:01
x ? y : z是一个三元算子,意思是“如果x,那么y,否则z”。
a/c/2只是一个简单的除法链。由于除法运算符(/)从左到右计算,它等价于(a/c)/2。
因此,表达式首先计算c>5,如果为真,它将计算为a/c/2,否则为0。计算值( a/c/2或0)将分配给变量b。
发布于 2019-04-08 11:46:19
可以重写为
if(c>5)
{
b = (a/c)/2;
}
else
{
b = 0;
}发布于 2019-04-08 12:12:51
我将提到c++的更多操作符优先规则,以防您对/和x ? y : z的优先级感到困惑。
下面是操作符优先级的官方页面:precedence
由此可以看出,运算符/比x ? y : z和=具有更大的优先级,因此首先从左到右计算,即a/c/2等于(a/c)/2。然后x ? y : z具有与=相同的优先级,从右到左计算,。现在它的意思是:
b = ( (c>5) ? ((a/c)/2) : 0 );希望能帮上忙。
https://stackoverflow.com/questions/55572654
复制相似问题