为什么y值为12 ?括号里值不应该是5和6吗?

img

y=(++x)+(++x)这两个括号里的值怎么算的?

求解答,尽量详细些,刚入坑不太懂。感谢

这种代码是不同的编译器执行结果是不同的
正常的应该是前面(++x)对x增加1,x变成5,并返回5暂时寄存起来.后面(++x)再对x增加1,x变成6,5+6=11
这样需要用一个额外的内存空间暂时寄存前面返回的5,
但有的编译器为了优化执行效率,不用额外的内存空间寄存返回的5,而是直接返回x的地址,
这样前面(++x)对x增加1,x变成5,返回x的地址.后面(++x)再对x增加1,x变成6, 也返回x的地址.
变成 x地址中的值 + x地址中的值
之后就是取出x地址中的值 6 进行相加 6+6=12

我你的问题做了一个专题,他包含了优先级的所有情况。包括前置++和后置++在判断语句中,在数据类型中,在赋值中,在输出语句中都有全面概述。可以给你较全面的认识优先级问题
http://t.csdn.cn/4IW6y
这个链接就是