写出下面表达弍运算后的结果。设x=1,y=2,z=3,u=false。
(1) y+=z--/-+x;     
(2) u=!((x>=--y||y++<=z--)&&y==z)     
(3) u=!((x>=--y|y++<=z--)&&y==z)     
(4) u=y>z^x!z    
(5) x>y?(x>z?x:y):(y>z?y:(z>x?z:x))
我的答案:
1)运行的结果是  x=1 y=-1 z=2    
因为z--的值为3,z的值为2 所以y+=3/(-1)=-3  y=-3+1=-2不是吗,但运行的结果是y=-1啊,为什么呢?
2)u=true  u=!((1>=1||2<=3)&&3==2)=!(true&&false)=!false=true
5)1>2为假,则执行 (y>z?y:(z>x?z:x));因为2>3为假,则执行(z>x?z:x);因z>x为真,则输出x即13、4题根本就不会做了,因为有|和^运算,这是两个二进制数之间才有的运算啊??我头都大了!

解决方案 »

  1.   

    1) y += z-- / -+x; 
    相当于y = y + ((z--) / (x * 1 * -1))
    = 2 + (3/-1)
    = 2 + (-3)
    = -1第3、4题先把十进制转成二进制,再列个竖式算就行了,没什么复杂的啊
      

  2.   

    写出下面表达弍运算后的结果。设x=1,y=2,z=3,u=false。
    (1) y+=z--/-+x;   
    执行顺序:
    +x  得到 x 此时的值:1
    -x  得到 -x,此时 -x = -1;
    z/-x 也就是 3/-1 ,得到 -3;
    y+ -3 也就是 2+ -3 = -1;
    z-- 此时 z = 2;
    y = -1;(2) u=!((x>=--y||y++<=z--)&&y==z)     y = -2;
    1>=-2 得到 true
    短路算法,略过y++<=z--
    -2 == 2 得到false
    true&& false得到 false
    !false得到 true(3) u=!((x>=--y|y++<=z--)&&y==z)     
    (4) u=y>z^x!z    
    (5) x>y?(x>z?x:y):(y>z?y:(z>x?z:x))这些表达式是连续的运算的还是都是同样的初始值运算的?
      

  3.   

    (1) y+=z--/-+x;   
    执行顺序:
    +x  得到 x 此时的值:1
    -x  得到 -x,此时 -x = -1;
    z/-x 也就是 3/-1 ,得到 -3;
    z-- 此时 z = 2;
    y+ -3 也就是 2+ -3 = -1;
    y = -1;刚才搞错一个顺序了。
      

  4.   

    还要帮我呀,niko7(掠水无痕)大侠,我就是后面三个题搞不定啊
     
      

  5.   

    等高人回答不过第一个的顺序是这样的:1) y += z-- / -+x; [1]z--[2]-+x[3]/[4]+
      

  6.   

    (3) u=!((x>=--y|y++<=z--)&&y==z)  
    想帮你做第三吧
    x>=--y    false
    y++<=z--  true
    y==z      false
    所以现在可以写成
    u=!((false||true)&&false) 
    false||true= true在继续
    u=!(true&&false) 
    u=!(false) 
    u=true!也不知道对不对!自己也差点资料吧
      

  7.   

    我个人觉得每个题都是独立的啊
    所以没必要把上题的值带入下提
    大家一起学习阿
    HOHO
      

  8.   

    第二个学习中
    x=1 y=2 z=3
    u=!((x>=--y||y++<=z--)&&y==z)x>=--y 就是 1>=1 应该为true啊 此时 x=1 y=1
    y++<=z-- 就是 1<3 应该是true啊 此时 y=2 z=2晕 我怎么得到的是false 啊
    请指教
      

  9.   

    5)  x>y?(x>z?x:y):(y>z?y:(z>x?z:x))
        1>2  取(y>z?y:(z>x?z:x))
        2>3  取(z>x?z:x)
        3>1  取z
     所以为3
      

  10.   

    补充一点,第2题和第3题体现了JAVA从C中继承而来的一个重要特性,就是“||”逻辑运算符的“短路”特性,像x >= --y || y++ <= z--这个表达式,因为“||”号的左边已经是true了,所以整个表达式的值必为true,这样JAVA就不会再计算“||”号右边的表达式,从而y++和z--都没有执行。而像x >= --y | y++ <= z--这个表达式,因为“|”不短路,既使左边的值为true,右边的y++和z--仍然会执行,所以结果就不一样。
      

  11.   

    查了一下资料,前面的答案对了、
    过程好像不对
    第3题应该是这样的
    (3) u=!((x>=--y|y++<=z--)&&y==z)  
    想帮你做第三吧
    x>=--y    true
    y++<=z--  true
    y==z      false
    所以现在可以写成
    u=!((true|true)&&false) 
    因为true|true= true所以可以写成
    u=!(true&&false) 
    u=!(false) 
    u=true!这下就对了
    搂住最好在程序里验证一下啊
    因为比较忙就不再帮你测试了
      

  12.   

    (4) u=y>z^x!z    
    现在帮你看看第四个
    首先说明^ 的意思是按位异或,据个例子
    0101   
    1100  
    ----
    1001 
    意思就是0101^ 1100=1001  
    现在我们来看看你的题
    y>z=0 而x!z=1
    所以u=0^1
    答案就不用说了吧。
      

  13.   

    直接写个class然后debug就知道了