一个简单的c++问题

bool x=true,y=false,z=false;
x=x&&y||z&&z;
z=!(x!=y)||(y==z);
其中
x=false;z=true
求y是什么?
bool x=true,y=false,z=false; 是什么意思啊?
x=false;z=true 又是什么意思?》

先给你解释下什么是true什么是false
在C语言中一个表达式,一个变量,一个常量都有布尔值(boolean),其中在逻辑表达式中,1表示真(true),0表示假(false).
布尔运算规则如下
1||0=1; 1||1=1; 0||0=0
1&&0=0; 1&&1=1; 0&&0=1;
其中||叫或运算符,就如同数学中的或一样,&&叫做与运算符.!叫作非运算符,就等同于取反,!1=0,!0=1;

对于变量来说,0为假,非0为真

逻辑运算符的有先级为 !>>&&>>||
按照这个顺序,按照上面的运算方法,就可以解你的这道题了.
bool x=true,y=false,z=false; //定义了三个bool型变量
x=x&&y||z&&z; //先作与运算,x=0,y=1,x&&y=0;
//z=0,z&&z=0;
//0||0=0
所以再把0的值赋值给x,那么x=false;
z=!(x!=y)||(y==z);
再根据有先级,先算条件运算,再算逻辑运算符
由于x=0,y=0 所以x等于y,这与x!=y相反,其值就为假(为0),再作非运算,其值为1,要使最后z等于true,所以y==z要么是真是假都可以,所以y=false不变嘛

如果改成(x!=y)||(y=z)话,其中x为真,y为假,z为真,y的值还是不变,仍然为假,为什么呢,后面不是有个赋值语句?理应该执行了赋值语句后y的BOOL值就等于z了嘛?
可是不是这样.
像这种逻辑运算叫作"短路"
什么意思呢,就是说,当逻辑运算是A && B时,只要当A已经是false了,整个表达式就是false,那么B表达式就自动不执行;同理,对于A || B,只要A是true,那么整个表达式的值也为true,因为或运算中只要其中一个为真,其整个表达为真,所以B表达式也不执行了.
这里正好解释上面题目,前半段的A为!(x!=y)其值为真,所以A || B也为真,即是后面半段的赋值表达式不执行,所以才会出现我说的那种情况
这是基础知识,有什么问题尽管提出来吧,我尽我能力为你解答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-28
y 不变啊, 还是false

y 没有被 改写

x 为真, y 为假, z 为假

经过 布尔运算 得出 x z 的新值本回答被提问者采纳
第2个回答  2008-01-28
y=false
因为在整个程序中,y除了初始化为false外,没有在对他进行付值,所以应然是初始值false

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网