下面两个程序最终i的值不一样,但是反汇编居然一样,太诡异了
#include <iostream>
using namespace std;
int main()
{
int i = 10;
&i;
if(i == 10)
{
int i = 3; //最终i=10
//i = 3 //最终i = 3
}
return 0;
vs2010使得上述代码的反汇编完全一样,让人琢磨不透,最终还是用vc6发现了端倪
结论:以这个例子来说,在从句中重定义变量是可以的,它也被当成普通的局部变量存储在ebp-8,并且编译器认为在该从句中i的地址为ebp-8,当该从句执行完毕时,i的地址依旧为ebp-4