诡异现象

jszhuweiwei 2009-10-22 09:08:18
我在对话框的初始化类定义了一个全局参数,
int type;
然后点用其中的一个函数,函数中有一句type=1;
然后再调用一个函数 int j=type,结果发现
j=-858993460


这是为什么?
...全文
117 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jszhuweiwei 2009-10-22
  • 打赏
  • 举报
回复
太感谢了,一语惊醒梦中人啊[Quote=引用 21 楼 muzizongheng 的回复:]
那肯定是你用的不是这个类的同一对象, 明显那个值就是没有初始化过的
[/Quote]
muzizongheng 2009-10-22
  • 打赏
  • 举报
回复
那肯定是你用的不是这个类的同一对象, 明显那个值就是没有初始化过的
jszhuweiwei 2009-10-22
  • 打赏
  • 举报
回复
我也希望是这样,可是我在这个类里面之定义了一个type,只用了3次。[Quote=引用 19 楼 muzizongheng 的回复:]
怀疑你调用的type不是同一个 , 而是各自的.

这个肯定是自己程序的问题, 慢慢调, 会找出来的.

不会无缘无故有什么灵异的现象.
[/Quote]
muzizongheng 2009-10-22
  • 打赏
  • 举报
回复
怀疑你调用的type不是同一个 , 而是各自的.

这个肯定是自己程序的问题, 慢慢调, 会找出来的.

不会无缘无故有什么灵异的现象.
jszhuweiwei 2009-10-22
  • 打赏
  • 举报
回复
type就出现了三次,一次定义,一次赋值,一次查询。我在赋值后再主对话框中查询type的值,也还是858993460,快郁闷死了[Quote=引用 16 楼 muzizongheng 的回复:]
那你就全部放断点啊, 汗 . 你应该把所有调用tpye的放断点, 然后单步看看.
[/Quote]
幸福官 2009-10-22
  • 打赏
  • 举报
回复
int type 还没有赋值吧?
muzizongheng 2009-10-22
  • 打赏
  • 举报
回复
那你就全部放断点啊, 汗 . 你应该把所有调用tpye的放断点, 然后单步看看.
jszhuweiwei 2009-10-22
  • 打赏
  • 举报
回复
这个我清楚,试了还是没有[Quote=引用 14 楼 zcj4046 的回复:]
引用 8 楼 jszhuweiwei 的回复:
class CLuyinList : public CDialog
{
          .....
public:
int type;         //单个对话框内标志不同命令
......
};
void CLuyinList::OnBroadcast() //按钮命令
{
// TODO: Add your control notification handler code here
........
type=1;                                                  //开始录音播报
((CCautionSystemDlg*)AfxGetApp()->m_pMainWnd)->SendOperate(command,operatetype,dlgsign);
........
}
void CLuyinList::CommunicationFunction()
{
........
int m=type;
.....
}
代码如上,这是一个子对话框,CCautionSystemDlg为主对话框,子对话框中OnBroadcast() //按钮命令促发事件,调用主对话框中函数,,然后调用子对框的CommunicationFunction()函数,发现type不等于1了,在这个对话框之前,试过其他的子对话框,都符合要求。why?


在红字对应的2行设置断点,我怀疑程序是先进入的下面的函数,那时候type还没赋值。
[/Quote]
zcj4046 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jszhuweiwei 的回复:]
class CLuyinList : public CDialog
{
          .....
public:
int type;          //单个对话框内标志不同命令
......
};
void CLuyinList::OnBroadcast() //按钮命令
{
// TODO: Add your control notification handler code here
........
type=1;                                                  //开始录音播报
((CCautionSystemDlg*)AfxGetApp()->m_pMainWnd)->SendOperate(command,operatetype,dlgsign);
........
}
void CLuyinList::CommunicationFunction()
{
........
int m=type;
.....
}
代码如上,这是一个子对话框,CCautionSystemDlg为主对话框,子对话框中OnBroadcast() //按钮命令促发事件,调用主对话框中函数,,然后调用子对框的CommunicationFunction()函数,发现type不等于1了,在这个对话框之前,试过其他的子对话框,都符合要求。why?
[/Quote]

在红字对应的2行设置断点,我怀疑程序是先进入的下面的函数,那时候type还没赋值。
jszhuweiwei 2009-10-22
  • 打赏
  • 举报
回复
肯定确定,跟踪过的。[Quote=引用 12 楼 jennyvenus 的回复:]
type=1;   

这种话在一个事件里面,你的事件肯定发生了吗?

[/Quote]
用户 昵称 2009-10-22
  • 打赏
  • 举报
回复
type=1;

这种话在一个事件里面,你的事件肯定发生了吗?
jszhuweiwei 2009-10-22
  • 打赏
  • 举报
回复
跟踪过了,OnBroadcast() 时type=1,之后就没有动过type,再回来CommunicationFunction() 查询type值时就发现不对劲了
hongya6088 2009-10-22
  • 打赏
  • 举报
回复
跟踪type的值,
muzizongheng 2009-10-22
  • 打赏
  • 举报
回复
放个断点, 单步调试啊, 看看每一步 type的值, 自己就能判断出来问题了.

要多调试....
jszhuweiwei 2009-10-22
  • 打赏
  • 举报
回复
class CLuyinList : public CDialog
{
.....
public:
int type; //单个对话框内标志不同命令
......
};
void CLuyinList::OnBroadcast() //按钮命令
{
// TODO: Add your control notification handler code here
........
type=1; //开始录音播报
((CCautionSystemDlg*)AfxGetApp()->m_pMainWnd)->SendOperate(command,operatetype,dlgsign);
........
}
void CLuyinList::CommunicationFunction()
{
........
int m=type;
.....
}
代码如上,这是一个子对话框,CCautionSystemDlg为主对话框,子对话框中OnBroadcast() //按钮命令促发事件,调用主对话框中函数,,然后调用子对框的CommunicationFunction()函数,发现type不等于1了,在这个对话框之前,试过其他的子对话框,都符合要求。why?
用户 昵称 2009-10-22
  • 打赏
  • 举报
回复
-858993460 = 0xcccccccc

简单来说,就是vc debug工程栈变量没有进行过初始化。
dirdirdir3 2009-10-22
  • 打赏
  • 举报
回复
变量type没有初始化而已...........
huofen2005 2009-10-22
  • 打赏
  • 举报
回复
代码贴出来!
fandh 2009-10-22
  • 打赏
  • 举报
回复
j=-858993460
很明显,这个j应该是没有赋值或者,本身type应该没有赋值
是不是变量所在的生命周期的原因?
muzizongheng 2009-10-22
  • 打赏
  • 举报
回复
给出代码,
加载更多回复(2)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧