Qt 奇怪,已经无语

xxoospring 2016-08-26 05:11:22
qt下面,简单程序,啥都不说,上图1:

如上图,watch窗口可以看见flag = 75,接下来判定if里面的条件,很明显条件肯定不成立,但是结果呢,见下图2:

这是为什么????if后面没有 ; ,项目也清理过,如果你以为到此就完了,那么后面还有高能的,运行 return 1 应该是退出函数了,
但是再点一次step over,它又跳回while那一行了!!

真是日了doge了,what happened!!!
...全文
241 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxoospring 2016-08-26
  • 打赏
  • 举报
回复
引用 8 楼 falloutmx 的回复:
你编译的时候是不是没有关闭优化,导致gdb和代码对不上
极有可能是你说的这个原因,程序运行结果是对的。
xxoospring 2016-08-26
  • 打赏
  • 举报
回复
引用 8 楼 falloutmx 的回复:
你编译的时候是不是没有关闭优化,导致gdb和代码对不上
怎么关闭?
falloutmx 2016-08-26
  • 打赏
  • 举报
回复
你编译的时候是不是没有关闭优化,导致gdb和代码对不上
xxoospring 2016-08-26
  • 打赏
  • 举报
回复
引用 5 楼 u010165006 的回复:
单步指示到那一行,return 1并没有执行。
首先很奇怪的是这个if他是怎么进来的。
xxoospring 2016-08-26
  • 打赏
  • 举报
回复
1.强转int没有用 2.单步知识进入了if,可是你看看第二张图,flag=75,这个if(0==flag)条件是不成立的,为什么会进去?
ooolinux 2016-08-26
  • 打赏
  • 举报
回复
单步指示到那一行,return 1并没有执行。
ztenv 2016-08-26
  • 打赏
  • 举报
回复
打打日志,单步调调看,
xxoospring 2016-08-26
  • 打赏
  • 举报
回复
这是代码。实在没办法,把函数里面关于文件操作的都去掉,只有一句话:if(0 == 75)return 1;它执行又是正确的。。。。。
没有
bool Dialog::CheckItem(QString date)
{

QFile fr("F:/note/note_record.txt");
fr.open(QIODevice::ReadOnly);
QTextStream in(&fr);
in.setCodec("UTF-8");
while(!in.atEnd())
{
QString temp = QString(in.readLine());
char flag = QString::compare(date, temp);
if(0 == flag)
return 1;
}
fr.close();
return 0;
}
ooolinux 2016-08-26
  • 打赏
  • 举报
回复
if ( 0 != flag ) 等于还是不等于? flag==75 !=0 怎么执行 return 1 ?
ooolinux 2016-08-26
  • 打赏
  • 举报
回复
if ( 0 == (int)flag )有用吗?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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