You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

乘除运算括号优先级:C语言与BODMAS规则的正确顺序疑问

C语言表达式括号优先级的正确写法

原表达式:

j=2 * 3 / 4 + 2.0 / 5 + 8 / 5;

两种括号添加方式:

  • 遵循BODMAS规则的写法:
j=(2 * (3 / 4)) + (2.0 / 5) + (8 / 5); // 此时j = 0
  • 按照C语言运算符优先级的写法:
j=((2 * 3) / 4) + (2.0 / 5) + (8 / 5); // 此时j = 2

结论:按照C语言运算符优先级添加括号的顺序是正确的

原因说明:
C语言中,乘法*和除法/属于同一优先级,且遵循左结合原则(即从左到右依次计算)。因此2 * 3 / 4会先计算2*3得到6,再计算6/4(整数除法结果为1)。

BODMAS规则中“除法优先于乘法”的逻辑并不适用于C语言,C语言对同优先级的乘除运算统一按左结合处理,而非先除后乘。

计算验证:

  • 按C语言规则计算:((2*3)/4)=1,2.0/5=0.4,8/5=1,总和为1+0.4+1=2.4,若j为整数类型会自动截断为2,与注释结果一致。
  • 按BODMAS规则计算:2*(3/4)=0,剩余两项和为1.4,总和1.4截断后为0,但这不符合C语言的实际运算逻辑。

内容的提问来源于stack exchange,提问作者taurus05

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:20:50