大家一直都知道有编译器都会对用户代码进行优化,尽量保证最高性能的代码。
但是没有任何的现象能证明它对代码做了优化处理(也许是大家根本没有关注过)。
我今天无意间发现了代码调试的一个“问题”:
在vc里建立个标准C的工程,输入如下代码
void main()
{
int a;
a=0;
if (a == 0)
{
return;
}
}
然后用F10单步跟踪,你会发现执行完 a=0 这句后就直接跳到了程序结尾的" } "处 。
而 if (a == 0) 根本就没有执行。
看看代码的逻辑, 当执行完a=0后,无论下面的条件是否成立执行的结果是一样的,return的作用是到直接程序结尾,跳过判断的话同样是到程序结尾,所以 if 直接被和谐了。
代码修改该成:
void main()
{
int a;
a=0;
if (a == 0)
{
a=0;
return;
}
}
或
void main()
{
int a;
a=0;
if (a == 0)
{
return;
}
a=0;
}
这样就不同了, 是否进入条件判断就会影响到执行不同效果的代码了。现在我们确实的看到了vc在优化我们的程序,我们没有被忽悠。