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

关于C++条件与算术运算符组合语法的疑问:j -= i < 3;

解释C++中的j -= i < 3;语法

嘿,这个简洁到有点“迷惑”的写法初看确实容易懵,我来给你一步步拆解明白!

首先得记住C++里一个关键规则:布尔值会被隐式转换成整数——true对应整数1,false对应整数0。这是整个表达式能工作的核心。

接下来看运算符的优先级:比较运算符<的优先级要高于复合赋值运算符-=,所以这个表达式会先计算i < 3,得到一个布尔结果:

  • 如果i的值小于3,i < 3的结果是true,自动转成整数1
  • 如果i的值大于等于3,i < 3的结果是false,自动转成整数0

然后再执行j -= 转换后的整数值,也就是等价于j = j - 转换后的整数值。

举两个实际例子就更清楚了:

  • 假设j=5,i=2:i<3为true→转1,j -=1后j变成4
  • 假设j=5,i=3:i<3为false→转0,j -=0后j还是5

其实这个写法就是下面这段代码的简化版:

if (i < 3) {
    j--;
}

或者也等价于三元运算符的写法:

j = j - (i < 3 ? 1 : 0);

不过要提一句,这种写法虽然省行数,但可读性对新手不太友好,如果是团队协作的代码,可能还是写成清晰的if语句更稳妥,避免队友一脸问号~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:34:37