中间的位操作符,有什么意思呢?该怎么处理

中间的位操作符,有什么意思呢?
void   main(   )    
{   int   a,b,c,y;
a=y=c=0;
++a   ||   ++b   &&   ++c;
printf( "a=%d\t   b=%d\t   c=%d\n ",a,b,c);
a=b=c=0;
++a   &&   ++b||++c;
printf( "a=%d\t   b=%d\t   c=%d\n ",a,b,c);
a=b=c=0;
++a   &&   ++b   &&   ++c;
printf( "a=%d\t   b=%d\t   c=%d\n ",a,b,c);
a=b=c=-1;
++a   &&   ++b   &&   ++c;
printf( "a=%d\t   b=%d\t   c=%d\n ",a,b,c);
a=b=c=-1;
++a   &&   ++b   ||   ++c;
printf( "a=%d\t   b=%d\t   c=%d\n ",a,b,c);
a=b=c=-1;
++a   ||   ++b   &&   ++c;
printf( "a=%d\t   b=%d\t   c=%d\n ",a,b,c);
}

------解决方案--------------------
当然是有意义的.
譬如++a || ++b && ++c; 如果a不是-1的话, ++b 和++c都不会执行的. (&&比||优先)
------解决方案--------------------
中间的不是位操作符,而是逻辑运算符!
------解决方案--------------------
根据适当逻辑条件执行整个语句或者是语句的前面某个部分 。
------解决方案--------------------
void main( )
{ int a,b,c,y;
a=y=c=0; //此处应该是 b, 你 写错了!
++a || ++b && ++c;
printf( "a=%d\t b=%d\t c=%d\n ",a,b,c);
a=b=c=0;
++a && ++b||++c;
printf( "a=%d\t b=%d\t c=%d\n ",a,b,c);
a=b=c=0;
++a && ++b && ++c;
printf( "a=%d\t b=%d\t c=%d\n ",a,b,c);
a=b=c=-1;
++a && ++b && ++c;
printf( "a=%d\t b=%d\t c=%d\n ",a,b,c);
a=b=c=-1;
++a && ++b || ++c;
printf( "a=%d\t b=%d\t c=%d\n ",a,b,c);
a=b=c=-1;
++a || ++b && ++c;
printf( "a=%d\t b=%d\t c=%d\n ",a,b,c);
}
------解决方案--------------------
唉,楼主连位操作符 与 逻辑运算符都还分不清
------解决方案--------------------


int main(int argc, char* argv[])
{
int a,b,c,y;
int i;
a=b=c=0;
i=((++a || ++b) && ++c);
printf( "a=%d b=%d c=%d i=%d\n ",a,b,c,i);

a=b=c=0;
i=(++a || ++b && ++c);
printf( "a=%d b=%d c=%d i=%d\n ",a,b,c,i);

a=b=c=0;
i=(++a || (++b && ++c));
printf( "a=%d b=%d c=%d i=%d\n ",a,b,c,i);
}

a=1 b=0 c=1 i=1
a=1 b=0 c=0 i=1
a=1 b=0 c=0 i=1

事实证明&&的优先级是大于||的
------解决方案--------------------
事实证明&&的优先级是大于||的

拜托:别犯这种无知的错误了。。。
------解决方案--------------------
Generics(网络流浪者) ( ) 信誉:100 Blog 加为好友 2007-4-26 10:32:41 得分: 0



我确实没把话说全. 不过&&确实是优先于||的,
++a || ++b && ++c 等价于 ++a || (++b && ++c), 而不是 (++a || ++b) && ++c,
所以在这种情况下, ++a只要是true, 后面的(++b && ++c)就不会被执行, 这叫做逻辑短路.

==================================================


既然这样的话 ,为什么
a=b=c=0;
++a || ++b && ++c;
printf( "a=%d\t b=%d\t c=%d\n ",a,b,c); 输出的1 0 0 ?

这样解释的话,你输出的 1 0 1 也不对啊。

------解决方案--------------------