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