C++ 一段代码的困惑

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:37:46
本人无意中写出这样一段代码:

if (m_dwCurrentIndex > (INT)m_nFilmIndex)
{
//AfxMessageBox("111");

for (INT i = m_nFilmIndex; i <= (INT)m_dwCurrentIndex; i++)
{
//AfxMessageBox("222");
}
}
else
{
//AfxMessageBox("333");

for (INT i = (INT)m_dwCurrentIndex; i <= m_nFilmIndex; i++)
{
AfxMessageBox("444");
}
}

在debug下运行没有问题,然而在release下运行, 却出现这样的问题:
程序进不了第2个for循环,即程序走不到AfxMessageBox("444");

在此特地提出这样一个问题。

注:m_dwCurrentIndex是DWORD型, m_nFilmIndex是INT型, 本人本来想成:
(INT)m_dwCurrentIndex > m_nFilmIndex, 另外这两个数据始终大于等于0
是这样的, 比如:m_dwCurrentIndex = 20 m_nFilmIndex = 25;
在release下运行时,发现:
AfxMessageBox("333");(没注释的情形下) 运行得到,但是
AfxMessageBox("444"); 运行不到

强转的时候用static_cast<INT>试试

你这个问题很可能是堆栈溢出。。。我也不知道具体什么情况,不好回答。你这样试试:或者空循环次数更多。
else
{
//AfxMessageBox("333");
int a = 0;
while(a < 100000)
{++a;}

for (INT i = (INT)m_dwCurrentIndex; i <= m_nFilmIndex; i++)
{
AfxMessageBox("444");
}
}

都进第一个循环了,咋还进第二个啊,进if就不进else,这个...还是我理解错了
奇怪了,关注一下吧,正常来说这是不可能的 ,还有就是你不可能弹出所有的对话框的,必须关闭掉一个才弹出下一个