不要太纠结这个问题,知道 i++ 和++i的不同就行了,至于连着一串的++ ,一般没有人写这种代码的,写出来都是蛋疼等着挨骂的,除非是考试题上面
如果想知道为什么,直接反汇编看看就清楚了。 不同编译器的确可能不一样
我这边的调试器,看红色的那句,直接被优化成0x23了,也就是 35
int j=5,k;
k=(j)+(++j)+(j)+(++j)+(j);
cout<<"k:"<<k<<endl;
00401000
mov
eax,dword ptr [__imp_std::endl (402038h)]
00401005
mov
ecx,dword ptr [__imp_std::cout (402058h)]
0040100B
push
eax
0040100C push 23h
0040100E
push
ecx
0040100F
call
std::operator<<<std::char_traits<char> > (401160h)
00401014
add
esp,4
00401017
mov
ecx,eax
00401019
call
dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (402044h)]
0040101F
mov
ecx,eax
00401021
call
dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (402040h)]
return 0;