#include <stdio.h>
#define PR(x,y,z) printf("x=%d y=%d z=%d\n",x,y,z);
void main()
{
int x,y,z;
x=y=z=2; ++x || ++y && ++z; PR(x,y,z);
x=y=z=2; ++x && ++y || ++z; PR(x,y,z);
x=y=z=-2; ++x || ++y && ++z; PR(x,y,z);
x=y=z=-2; ++x && ++y || ++z; PR(x,y,z);
}
请高手解答下,谢谢
----------------解决方案--------------------------------------------------------
A||B
如果A的值为非0那就不执行B
反之执行
A&&B
如果A的值为非0那就执行B
反之不执行
----------------解决方案--------------------------------------------------------
哦,谢谢解答
那如果A||B||C ,这样的应该怎么执行?
A || B && C 应该执行哪个
----------------解决方案--------------------------------------------------------
哦,谢谢解答
那如果A||B||C ,这样的应该怎么执行?
A || B && C 应该执行哪个
(A||B)||C ----->D||C D代表A||B
A || B && C 也如此
----------------解决方案--------------------------------------------------------
&&比||权限高
先执行&&
是这样吗
----------------解决方案--------------------------------------------------------
不是
它俩优先级相同
从左至右运算
----------------解决方案--------------------------------------------------------
我反对!
优先级从高到底
! → && → ||
2级 11级 12级
[此贴子已经被作者于2007-2-8 17:37:56编辑过]
----------------解决方案--------------------------------------------------------
x=y=z=2; ++x || ++y && ++z; PR(x,y,z);
那如果那这句来解释:
++x || ++y && ++z
先是 (++x || ++y) && ++z
++x || ++y 的话,++x是2,不为0,所以执行++x,x等于3
然后在怎么计算啊,我就不清楚了???
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define PR(x,y,z) printf("x=%d y=%d z=%d\n",x,y,z);
void main()
{
int x,y,z;
x=y=z=2; ++x || ++y && ++z; PR(x,y,z);
x=y=z=2; ++x && ++y || ++z; PR(x,y,z);
x=y=z=-2; ++x || ++y && ++z; PR(x,y,z);
x=y=z=-2; ++x && ++y || ++z; PR(x,y,z);
}
++x || ++y && ++z
先运行++x 条件为真 则不运行++y && ++z 直接输出 所以 输出3 2 2
++x && ++y || ++z
&&(先运行++x如果条件为真则运行++y) 因为前两个条件为真所以不运行++z 所以输出3 3 2
----------------解决方案--------------------------------------------------------
如果楼主 还不明白的话 我还可以给你解释的在详细一点
----------------解决方案--------------------------------------------------------