[watermark]今天无意间听到同事说到的 i++,觉得挺有意思,便记录了下来。
事情是这样的,在vc++6.0的环境中,当你在调试的时候在watch框中查看变量值的时候,如果用了i++,那么i的值同样会改变(+1)。
我们经常在调试的时候会在watch框中来改变一个变量的值,好尽快让它满足某种条件,尽快执行你想要执行的代码。我一直以为在watch中仅仅可以改变变量,原来还可以执行代码。
呵呵,很小的一个细节问题。
测试代码如下:
#include "stdio.h"
main()
{
int i = 0;
while (1)//断点处
{
printf("%d \n",i);
while(i == 0)
{
printf("bye!\n");
return 1;
}
}
}
你可以在 while(1)这里打个断点,然后在watch里输入i++,试试看会是怎么样。
后来又试了下,原来在watch里面,代码都可以执行的。呵呵。
测试代码:
#include "stdio.h"
main()
{
int i = 0,j = 0;
while (1)//断点处
{
printf("%d \n",i);
printf("%d \n",j);
while(i == 0)
{
printf("bye!\n");
return 1;
}
}
}
在watch里面 输入个: j = j+1;
在仔细观察j的值,原来每执行一句代码,同时也会执行一句 j = j+1;
想了想可能是因为调试的时候vc把代码都加载进内存的原因吧,具体我也不知道,如果有高手了解的话,指点下了哦。
以后调试的时候要小心了。尤其是代码本身就包含i++这类语句的时候,哪个时候你在watch里面看到的值并不一定准确哦。。。最好仅仅看i的值,不要有别的附加条件了。[/watermark] |