已知:X=Y=Z=0且均为int型变量,执行语句:++X||++Y&&++Z;求变量X与Y的值。这道题搞不明白。求高手解答一下。

解决方案 »

  1.   

    这个问题发C#区不对吧,C#中int类型是不能做&&和||运算的。
    如果是C,我没记错的话,应该是这样
    X=X+1(=1);
    Y=Y+1(=1);
    Z=Z+1(=1);
    X||Y&&Z(=1);
    所以X和Y都是1
      

  2.   

    || 的运算规则为: 只要有第一个表达式的值为 true(非0), 整个表达式的值就为 true, 后面任何运算根本都不用执行, 
    所以结果为: X = 1, Y = 0, Z = 0&& 也有 相似的 规则
      

  3.   

    在C语言中,&&的优先级高于||的,所以先进行++Y,这时Y的值是1,&&前面的表达式的值也是1,在进行++Z,这时&&后的表达式的值也为1,所以||运算符后面的式子整体为1,在或运算中,当有一个为1时,整个表达式的值就是1,所以不会再执行||前面的式子了。因此,X=0,Y=1。
      

  4.   


    X=Y=Z=0;
    计算过程 Z=0; Y=Z=0; X=Y=0;
    :++X||++Y&&++Z 只计算而舍弃算式值
    首先计算++X 因为先自加 所以X=1;然后判断 X=1 或后边的 
    因为不管后边是什么 算式都成立(:++X||++Y&&++Z )所以跳过 ++Y&&++Z
    关于这一点 一些编译器有开关 可以控制后面是不是继续计算  或者控制算式从右往左运算
    结果是 X=1 Y=0 Z=0