experssion:int y=1;
0||y--;"0||y--"的表达式值是多少呢?应该是0吧,bool值false.experssion1:bool a;
int y=1;
a=0||y--;
cout<<a;大家试验一下输出,a的输出是true啊?why?

解决方案 »

  1.   

    bool a;
    int y=1;
    a=0||y--;//错了,应该--y
    cout<<a;
      

  2.   

    a=0返回true
    你要返回false该写成a==0||--y
      

  3.   

    1.关于优先级,C++中是!,算术运算符,关系运算,&&(逻辑与),||(逻辑或),赋值运算,这是从C中继承的不会有错。
    2.关于||和|,我不大明白你的意思,|是按位或
    3.y--,--y的区别我当然知道了,只是如果在这里用了y--,出现这样的结果该如何解释呢?
      

  4.   

    晕,楼主还不明白?
    y = 1; 则y--表达式的值是1,
    a = 0||y-- 等价于a = 0||1,||运算符只要左右表达式其中一值为真则返回true,所以a == true;
    而--y表达式的值为0,则(a = 0||0) == false;
      

  5.   

    #include "stdafx.h"
    #include<iostream>
    using namespace std;int main()
    {int x=1;
     int y=1;
     bool a=false;
     a=(0||(y--)); cout<<a;
    }可惜用--y和y--还是不能很好的解决问题啊,大家可以去试试这个代码的输出。hoho
      

  6.   

    a = ( 0 || (y--) )(y--) 运算的结果是先返回y的数值,然后再把y的结果减1所以,上述表达式等价于
    等价于
      a = 0 || y;
      y --;
    结果是1要看到不同的结果,你要写成
      a = ( 0 || (--y) )
      

  7.   

    a = ( 0 || ( -- y)) 
    当中 --y是先把y的数值减1,然后返回y的数值
    它等价于y = y - 1;
    a = 0 || y
      

  8.   

    回复人: laogong(老臭虫) ( ) 信誉:100  2004-12-30 12:32:00  得分: 0  
     
     
       呵呵,i--和--i楼主没有搞清楚
      
     
      

  9.   

    晕。
    原来是这个BUG啊,真大。
      

  10.   

    恩,这个问题就算解决了:)分数加给happy_888和ipgk了,谢谢大家的支持!