int a=0, 则a=(a==0)等于几?对一段程序中的这样一句不大懂。
看语句a应该是等于1的,但对下面一段程序中这样一句感到不解
oddline = 0;
for (i=0; i<subSize; i+=stride)
{
oddline = (oddline == 0);
for (j=0; j<subSize; j+=stride)
{
if ((oddline) && !j)
j+=stride;
fa[(i * size) + j] =scale * fractRand (.5f) +avgDiamondVals (i, j, stride, size, subSize, fa);
}
这是程序中的一段,不知道oddline = (oddline == 0);和((oddline) && !j)中的oddline有什么作用,因为在其他程序部分中都没有对oddline进行改变。程序运行的结果是没错的,但我把(oddline == 0)改为1或者把((oddline) && !j)中的oddline改为1,程序运行的结果就不一样。
不知道是怎么回事。
问题点数:0、回复次数:10Top
1 楼foochow(无聊,灌水......)回复于 2005-06-02 22:54:31 得分 0
oddline和bool值一样吧,true和1,false和0-_-Top
2 楼yesiloveyou(下意识的弯了一下腰,TMD,踩狗屎了)回复于 2005-06-02 22:54:56 得分 0
oddline = (oddline == 0);
第一次oddline=0;
循环一次后oddline=1;
再循环 oddline=0;
是0 1 0 1 0 1 序列 你改成1 当然会结果不一样了/Top
3 楼sunman1982(冥王星)回复于 2005-06-02 22:58:19 得分 0
这个是要结合上下文看的,你发全点吧Top
4 楼foochow(无聊,灌水......)回复于 2005-06-02 22:59:26 得分 0
1 0 1 0 1 0吧-_-Top
5 楼luo_lei(火云邪神)回复于 2005-06-02 23:12:50 得分 0
在还没循环的时候,oddline=0,当你循环了一次后,oddline的值就变为true(一切非零的数),以后oddline的值就在ture和false之间交替变换.而oddline的值直接回影响第二个循环的结果.所以当你把oddline的值改为1后,那么第一次循环的结果是oddline的值是false而不是ture了,这又回影响第二个循环的结果,所以结果回不一样了.
不知道对不对!Top
6 楼luo_lei(火云邪神)回复于 2005-06-02 23:13:51 得分 0
搞忘说了,ture是非零,false是零Top
7 楼mccxj(老鼠不逛街)回复于 2005-06-02 23:21:20 得分 0
int a=0, 则a=(a==0)等于几
简单测试了一下。。
#include <iostream.h>
int main(void)
{
int a=0;
a=(a==0);
cout<<a;
return 0;
}
结果是1;呵呵。。在c++里边。。true是用1表示。。false用0表示。。。
a==0..这个就是真咯。。也就是1咯。。。。Top
8 楼defyer007(深入浅出)回复于 2005-06-02 23:51:04 得分 0
当然是等于1了
类的定义中有个默认类型转换函数吧
如operator BOOL([参数])Top
9 楼zdy_8212(zdy_8212)回复于 2005-06-02 23:54:22 得分 0
你的动作是将它看做整型,而它原意是隐式转为BOOL。作为一个标记使用。Top
10 楼mostideal(三甲)回复于 2005-06-03 00:07:45 得分 0
up 一个。。Top




