阅读:1924回复:11
我这边一个VC程序里有一个if语句,条件不满足也执行下面的内容!
我这边有个VC的程序,里面有类似如下代码的程序段:
if(a == 1 || b == 1) return 0; 其中a、b在使用之前都已经初始化,在调试时发现,当a=0,b=0时,return 0语句依然被执行! 真是见了鬼了,那位兄弟遇到过给提个醒,多谢了 :( |
|
沙发#
发布于:2004-07-14 09:33
我用了你的语句试过了,不会出现你说的情况,是不是其他语句的问题啊!
|
|
板凳#
发布于: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;???? 没有遇到过。 |
|
地板#
发布于:2004-07-14 09:53
我在程序中试过了
在return 0;处加断点程序有的时候会停,停下的时候看那两个值都是0! 但有的时候重新编译一下就又不会停了,十分奇怪 是不是我的盗版vc的问题?还是编译环境的问题?可是之前一直用的挺好的呀。 [编辑 - 7/14/04 by jinghuiren] |
|
地下室#
发布于:2004-07-14 09:57
怪问题有很多。
把*.ncb,*.bsc,*.opt,*.clw等删掉,重新编译,一般都能解决。 |
|
|
5楼#
发布于:2004-07-14 10:01
怪问题有很多。 我马上试试看 |
|
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 |
|
7楼#
发布于:2004-07-14 11:38
怪问题有很多。 可能是代码乱了,符号和exe不匹配,ncb和opt文件删除,然后rebuild all 试试吧 |
|
|
8楼#
发布于:2004-07-14 14:20
试了试,没有解决
不过在无意中发现了另一个文件中也定义了a和b!(程序不是我写的:)) 并且还有关联,删掉一个就不出这个问题了 但是又出了别的问题:( 还得慢慢调,真郁闷! :( 结帖放分! :) |
|
9楼#
发布于:2004-07-14 14:45
把临时文件删除了!重新rebuild all吧!
|
|
10楼#
发布于:2004-07-14 21:52
变量的作用域越大,名字也越长。。。
居然会有全局的变量,就叫a和b的。。。 |
|
11楼#
发布于:2004-07-15 08:46
变量的作用域越大,名字也越长。。。 呵呵,只是举个例子而已,实际程序中起的名字当然是要有意义的才行的 :) |
|