关于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
相关产品推荐
相关产品推荐

