回 帖 发 新 帖 刷新版面

主题:帮帮忙!

#include "stdio.h"
main()
{
    int x,y,z;
    x=y=z=-1;
    ++x&&++y&&++z;
    printf("x=%d\t y=%d\t z=%d\n",x,y,z);
    x=y=z=-1;
    ++x&&++y||++z;
    printf("x=%d\t y=%d\t z=%d\n",x,y,z);
    x=y=z=-1;
    ++x||++y||++z;
    printf("x=%d\t y=%d\t z=%d\n",x,y,z);
}
为什么以上的结果为:x=0 y=1 z=-1
                   x=0 y=-1  z=0
                   x=0 y=0 z=0
越详细越好

回复列表 (共3个回复)

沙发

对不起我不知道要是我知道我一定会帮助你的了。

板凳

不知道.

3 楼

我运行了一下,答案是:(有点不一样)
                   x=0 y=1   z=-1
                   x=0 y=-1  z=0
                   x=0 y=0   z=0
原因:
     ++x&&++y&&++z  :  ++x后x=0,对于&&来说只要左边为0就不在计算右边
     ++x&&++y||++z  :  ++x后x=0,所以++y不执行,遇到||时,因为这是左边为0,所以
                          执行右边的++z,(若这是左边为1,同样不要再计算右边)
      ++x||++y||++z  ;  原理同上
  

我来回复

您尚未登录,请登录后再回复。点此登录或注册