C语言中‘+’运算符工作原理及符号组合运算疑问解析
C语言连续正负运算符结果解析
你的猜想完全正确,这个结果本质和常规符号乘法规则的效果一致,但底层是C语言一元正负运算符的逐次运算逻辑:
+ +9:连续两个一元正运算符,正号不会改变数值,最终结果为9+ -9:一元正运算符作用于-9,正号不改变符号,结果为-9- +9:一元负运算符作用于+9(即9),取反后结果为-9- -9:连续两个一元负运算符,相当于对-9取反,结果为9
底层运行逻辑
C语言里的+和-作为单目运算符时,具有右结合性(运算顺序从右往左),优先级高于双目算术运算符:
- 处理
+ +9时,先计算最右侧的+9(结果为9),再对9应用左侧的+,最终得到9 - 处理
+ -9时,先计算-9(结果为-9),再对-9应用+,结果保持-9 - 处理
- +9时,先计算+9(结果为9),再对9应用-取反,得到-9 - 处理
- -9时,先计算-9(结果为-9),再对-9应用-取反,得到9
简单说,连续的单目正负号就像多次对数值做符号翻转或保持,最终结果和符号乘法的规则完全匹配:负负得正、正负得负、正正得正。
内容的提问来源于stack exchange,提问作者Anupam Roy
相关产品推荐
相关产品推荐

