众所周知C++编译器尤其是老版的VC6.0是有一些问题的,今天就碰到了这样一个问题
int a=0; a=!a++; printf("%d ",a); int b=0; b=!b++; printf("%d %d",b,!b++); 输出的结果是1 2 0 为什么同样是x=!++,输出x结果不一样呢 还有,对于a=a!++,不应该是先得!a为1,a=1,之后再++得a=2吗,1到底哪来的,求解
显然实际运算结果和推算结果不符,因此初步断定是编译器问题
查看汇编指令
b=!b++;以下是本条指令的汇编指令
0040163B mov eax,dword ptr [ebp-0Ch]从存储器取出b(!运算)
0040163E mov ecx,dword ptr [ebp-0Ch]从存储器取出b(++运算)
00401641 add ecx,1 b自增(++运算)
0040