我在Visual C++.NET中写如下语句:
BYTE s = 210;
当然是在赋值语句之后设置断点。
然后我在调试器中观察s的值看到值为0;但是我写如下语句:
if(s == 0)
{
   // do sth;
}
不执行。
但是
if(s == 210)
{
   // do sth;
}
执行。
但是为什么在调试器中却看不到s的值为210呢?不要轻视它,你自己试一试就知道了!

解决方案 »

  1.   

    呵呵,有趣,没装.Net
    搂主够牛
      

  2.   

    不信自己试试看:main()
    {
    BYTE s = 200;
    int i = 90;
    在此设断点 i = i + 1;
    return 0;
    }看一看在调试器里s的值。
      

  3.   

    我用VC .Net 2003创建的基于MFC的对话框的确定按钮中调试,在调试器中可以看到s的值,三种形式的测试:1、把鼠标移动到s上面,则显示s的值为200;2、在快速监视中s的值还是200;3、在监视1窗口中s的也是200。
    在控制台模式的情况下也是一样的。
      

  4.   

    哈,我这里有好几个呢,都是编译器优化搞的,其中一个:
    http://expert.csdn.net/Expert/topic/1982/1982475.xml?temp=.26470587.1.3088版;
      

  5.   

    #include "stdafx.h"
    #include <stdio.h>
    #include <conio.h>
    void stack()
    {
    int i = 0;
    printf("%d\n",&i);
    getch();
    }int _tmain(int argc, _TCHAR* argv[])
    {
    int i = 0;
    printf("%x\n",&i);
    stack();
    getch();
    int a[20000000];
    a[19999999] = 0;
    printf("%d",a[19999999]);
    return 0;
    }哈,兄弟,有空这个也报了吧,在我的机器上,非优化下它抛出异常,/02下反而正常;
    版本见上,近来这样的问题太多了,我都麻木了;多教训教训MS的人;谢谢拉;初学,不知道,请多指教;
      

  6.   

    我说的是 VS.NET 2002,2003没有这个问题。Visual C++ 6.0也没有这个问题。
      

  7.   

    现在都应用vc.net 2003,既然它没事就当是Bug吧。