jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
阅读:1924回复:11

我这边一个VC程序里有一个if语句,条件不满足也执行下面的内容!

楼主#
更多 发布于:2004-07-14 09:13
我这边有个VC的程序,里面有类似如下代码的程序段:
if(a == 1 || b == 1)
    return 0;
其中a、b在使用之前都已经初始化,在调试时发现,当a=0,b=0时,return 0语句依然被执行!
真是见了鬼了,那位兄弟遇到过给提个醒,多谢了 :(
jec017
驱动太牛
驱动太牛
  • 注册日期2002-08-22
  • 最后登录2008-01-09
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-14 09:33
我用了你的语句试过了,不会出现你说的情况,是不是其他语句的问题啊!
darydl
驱动小牛
驱动小牛
  • 注册日期2003-06-29
  • 最后登录2017-05-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-07-14 09:37
||的用法例子:
In the following example, the logical-OR operator (||) determines if either switch setting is true. Since nSw1 is true, AnyFunction() will execute.

// Example of the logical-OR operator
int nSw1=1, nSw2=0;

if (nSw1 || nSw2) {  // nSw1 is true while nSw2 is not true
     AnyFunction();  //  so, this function will execute
}
For related

所以我觉得不可能执行return 0;

可能是其他地方的return 0;????
没有遇到过。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-14 09:53
我在程序中试过了
在return 0;处加断点程序有的时候会停,停下的时候看那两个值都是0!
但有的时候重新编译一下就又不会停了,十分奇怪
是不是我的盗版vc的问题?还是编译环境的问题?可是之前一直用的挺好的呀。

[编辑 -  7/14/04 by  jinghuiren]
cqtcqt
驱动小牛
驱动小牛
  • 注册日期2002-02-06
  • 最后登录2005-09-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-14 09:57
怪问题有很多。

把*.ncb,*.bsc,*.opt,*.clw等删掉,重新编译,一般都能解决。
我不过是世中一粒微尘。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-14 10:01
怪问题有很多。

把*.ncb,*.bsc,*.opt,*.clw等删掉,重新编译,一般都能解决。

我马上试试看
darydl
驱动小牛
驱动小牛
  • 注册日期2003-06-29
  • 最后登录2017-05-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-07-14 10:51
CString str_a;

CString str_b;
if(a == 1 || b == 1)
str_a.Format("%d",a)
AfxMessageBox(str_a);
str_b.Format("%d",b)
AfxMessageBox(str_b);
return 0;
try the code to test a and b value
poweruser
驱动老牛
驱动老牛
  • 注册日期2003-02-26
  • 最后登录2008-07-18
  • 粉丝0
  • 关注0
  • 积分652分
  • 威望72点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-14 11:38
怪问题有很多。

把*.ncb,*.bsc,*.opt,*.clw等删掉,重新编译,一般都能解决。


可能是代码乱了,符号和exe不匹配,ncb和opt文件删除,然后rebuild all 试试吧
老虎不发威,你当我是Hello Kitty!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-14 14:20
试了试,没有解决
不过在无意中发现了另一个文件中也定义了a和b!(程序不是我写的:))
并且还有关联,删掉一个就不出这个问题了
但是又出了别的问题:(
还得慢慢调,真郁闷! :(
结帖放分! :)
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-14 14:45
把临时文件删除了!重新rebuild all吧!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2004-07-14 21:52
变量的作用域越大,名字也越长。。。
居然会有全局的变量,就叫a和b的。。。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-15 08:46
变量的作用域越大,名字也越长。。。
居然会有全局的变量,就叫a和b的。。。


呵呵,只是举个例子而已,实际程序中起的名字当然是要有意义的才行的 :)
游客

返回顶部