社区
C++ 语言
帖子详情
C++有没有可能函数返回值是true,而返回之后得到的结果是false?
jacqueslim
2011-10-27 07:25:50
最近在用QT写一个连连看游戏。。经过数次的调试可以确定,一个函数结果是return true,而当利用这个结果时,就变成了false...请问各位有没有遇到这些情况?求解答,谢谢。
...全文
457
15
打赏
收藏
C++有没有可能函数返回值是true,而返回之后得到的结果是false?
最近在用QT写一个连连看游戏。。经过数次的调试可以确定,一个函数结果是return true,而当利用这个结果时,就变成了false...请问各位有没有遇到这些情况?求解答,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jacqueslim
2011-10-28
打赏
举报
回复
bool MyWidget::firstMatch(myButton &fClick, myButton &sClick) //这个函数是实现不拐弯匹配。
{
int R = 0, C = 0;
int min1 = 0, max1 = 0, min2 = 0, max2 = 0;
if (fClick.getButtonRow() == sClick.getButtonRow())
{
R = fClick.getButtonRow();
min1 = fClick.getButtonCol()>sClick.getButtonCol()?sClick.getButtonCol():fClick.getButtonCol();
max1 = fClick.getButtonCol()>sClick.getButtonCol()?fClick.getButtonCol():sClick.getButtonCol();
for (int i = min1 + 1; i < max1; i++)
{
if (button[10 * R + i]->getFootPrint())
{
return false;
}
}
if (fClick.getObjectText() == sClick.getObjectText())
{
return true;
}
else
{
return false;
}
}
else if (fClick.getButtonCol() == sClick.getButtonCol())
{
C = fClick.getButtonCol();
min2 = fClick.getButtonRow()>sClick.getButtonRow()?sClick.getButtonRow():fClick.getButtonRow();
max2 = fClick.getButtonRow()>sClick.getButtonRow()?fClick.getButtonRow():sClick.getButtonRow();
for (int i = min2 + 1; i < max2; i++)
{
if (button[10 * i + C]->getFootPrint())
{
return false;
}
}
if (fClick.getObjectText() == sClick.getObjectText())
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
追求执着
2011-10-28
打赏
举报
回复
星羽
2011-10-28
打赏
举报
回复
firstMatch
看看你这个函数的实现
jacqueslim
2011-10-27
打赏
举报
回复
如下是我游戏里的一个代码例子
if (!button[10 * i1 + j1]->getFootPrint())
{
if (firstMatch(*button[10 * i1 + j1], sClick) && firstMatch(*button[10 *i1 + j1], fClick))
{
return true;
}
}
这里firstMatch(*button[10 * i1 + j1], sClick)返回的结果是false,但是却进入了if语句的函数体。。。这是为什么啊
jacqueslim
2011-10-27
打赏
举报
回复
什么是不可能被其它程序直接访问??[Quote=引用 1 楼 mscf 的回复:]
仔细检查下,函数返回是临时变量,不可能被其它程序直接访问的,很邪门~
[/Quote]
jacqueslim
2011-10-27
打赏
举报
回复
我就是单步跟踪到函数的return true,而当利用到函数的返回值时却是false...很困惑,找了一天的原因。。找不到。。。
iamnobody
2011-10-27
打赏
举报
回复
楼上正解。肯定是修改了返回的eax
gw_net
2011-10-27
打赏
举报
回复
debug with assemly code
bottlerun
2011-10-27
打赏
举报
回复
栈坏了,要么踩坏了,要么溢出了
pb_myown
2011-10-27
打赏
举报
回复
不会出现这样的情况
pandeng4639088
2011-10-27
打赏
举报
回复
这是不可能出现的,除非电脑中病毒,或是程序错序,因为在函数调用中,程序会保存当前工作的函数,压入堆栈,进入函数调用(此时栈顶为调用的函数),调用的函数工作完成后,程序返回时,会把返回的值一起带回,调用函数出栈,程序将带回的值回到原先调用函数的地点。
如果不出意外的话,是不可能出现楼主所说的情况
柯本
2011-10-27
打赏
举报
回复
数组越界,内存溢出,非法指针使用,及不正当的类型转换等都可以导致程序的异常,检查程序,单步跟踪下.
zhanglingkangk
2011-10-27
打赏
举报
回复
不会的。
qing_ping
2011-10-27
打赏
举报
回复
你用一个变量,函数返回时马上把结果保存试试。
薛定谔之死猫
2011-10-27
打赏
举报
回复
仔细检查下,函数返回是临时变量,不可能被其它程序直接访问的,很邪门~
EDA/PLD中的Visual
C++
6.0 API
函数
操作技巧集
参数 bshow,为布尔型,bShow的值为
False
时隐藏光标,为
True
时显示光标;该
函数
的
返回
值
为整型,为鼠标隐藏或显示的指数器;
返回
值
大于等于0时显示光标,否则隐藏鼠标;如果安装了鼠标初值为0。实例: 在基于...
Visual
C++
6.0 API
函数
操作技巧集
参数 bshow,为布尔型,bShow的值为
False
时隐藏光标,为
True
时显示光标;该
函数
的
返回
值
为整型,为鼠标隐藏或显示的指数器;
返回
值
大于等于0时显示光标,否则隐藏鼠标;如果安装了鼠标初值为0。实例: 在基于...
leetcodepushfront-data_structure:数据结构的实现
如果栈为空
返回
true
,否则
返回
false
; top():
返回
栈顶,但不删除成员; size():
返回
栈内元素的大小; AQueue是以数组实现的队列 LQueue是以指针实现的队列,只有后向指针 原
c++
已经有queue的实现方法,在使用时...
C++
线程处理
函数
的
返回
值
线程处理
函数
常见的
返回
类型为void,是否可以指定为其它类型的
返回
值
呢。
C/
C++
自定义
函数
、
返回
值
2、调用的子
函数
没有
返回
值
,用void,否则会报错子
函数
没有
返回
值
。 ①有
返回
值
根据
返回
值
类型来定义为int,并且在子
函数
结尾一定要写上return result(需要
返回
的值) int main中需要定义一个新的变量去接收子...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章