C++中单目+、-运算符运行结果异常原因咨询
单目正号运算符的运行逻辑说明
你出现误解的核心原因是混淆了单目运算符和双目运算符的定义,这段代码里的+不是做加法的双目运算符,是仅对单个操作数生效的单目正号运算符,具体运行逻辑如下:
- 逐行解析代码执行过程:
- 初始化语句
int x=9执行完成后,变量x的初始值为9 - 执行
x=-x时,-为单目负号运算符,作用是对操作数取反,运算得到结果-9,赋值给x后x的值更新为-9,第一次输出结果为-9 - 执行
x=+x时,+为单目正号运算符,C/C++规范中明确规定单目正号运算符不会修改操作数的符号和数值,仅返回操作数本身的值,所以对当前值为-9的x执行+x运算,得到的结果仍然是-9,赋值给x后x的取值没有变化,第二次输出自然还是-9
- 初始化语句
补充说明:单目正号是和单目负号对应设计的运算符,本身没有对数值做符号修正的作用,既不会把负数转为正数,也不会在输出时额外添加正号标识,你如果执行
cout << +(-9);得到的输出结果同样是-9,和直接输出-9没有区别。
内容的提问来源于stack exchange,提问作者John Mellow
相关产品推荐
相关产品推荐

