首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要知道c++“b= (c > 5)?a/c/2 :0”中这句话的解释;

我需要知道c++“b= (c > 5)?a/c/2 :0”中这句话的解释;
EN

Stack Overflow用户
提问于 2019-04-08 11:41:40
回答 3查看 78关注 0票数 0

我需要知道C++中这句话的解释

我正在为BL0937编辑一个库,它使用能源监控参数,为了简单起见,我使用了一个b。

代码语言:javascript
复制
b = (c > 5) ? a/c/2 : 0;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2019-04-08 11:46:19

可以重写为

代码语言:javascript
复制
if(c>5)
{
    b = (a/c)/2;
}
else
{
    b = 0;
}
票数 4
EN

Stack Overflow用户

发布于 2019-04-08 12:12:51

我将提到c++的更多操作符优先规则,以防您对/x ? y : z的优先级感到困惑。

下面是操作符优先级的官方页面:precedence

由此可以看出,运算符/x ? y : z=具有更大的优先级,因此首先从左到右计算,即a/c/2等于(a/c)/2。然后x ? y : z具有与=相同的优先级,从右到左计算,。现在它的意思是:

代码语言:javascript
复制
b = ( (c>5) ? ((a/c)/2) : 0 );

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55572654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档