在VC 6.0中编译下面的代码
int a=0;
printf("%d%d%d",a,a++,a--);
printf("%d%d%d",a,++a,a--);用debug和release方式分别编译,结果不同
是什么原因呀?

解决方案 »

  1.   

    原因判断:
    release是在整个运算结束后输出结果,而debug是单节点运算的
      

  2.   

    debug版本 
       较release大,编译器在目标文件中填满了符号信息,这些符号信息记录了编译器知道的函数名、程序中的变量名和标示的内存地址。通过读取源文件和包含在执行文件中的符号信息,调试器能将源代码中的每条流线同相应的可执行映像中的二进制指令联系起来,调试器运行可执行文件,但必须使用源代码显示程序的进程。
    release版本
       仅仅含有<优化>的可执行指令,没有符号信息.当然也可以在调试器中执行一个release版本,不过这时候,编译器会提示没有符号信息.
      

  3.   

    同一个编译器编译出来的程序运行结果是不会不同的,那是编译器自动优化的结果,关掉优化结果就会相同
    在release下,ALT+F7,C/C++,optizitions,选disable