int a; 是变量定义,也就是说编译器将为a分配存储,这在编译时被处理。 int a = 0;是定义+初始化,定义的分配存储的action在编译时完成,初始化的action则在运行时完成(将执行类似dword ptr [ebp-4],0的指令,而单独的int a;不会有对应的执行指令)。 定义是分配空间,而初始化是对分配好的空间第一次赋值。定义是在编译时进行,而初始化需要等到执行的时候才进行。