一个比较迷惑的问题?

chenting27 2004-05-06 10:02:13
#define s x = y = z
#define P3(x,y,z) printf("x = %d\t y = %d\t z = %d\n",x,y,z)

main()
{
int x,y,z;
s = 1; ++x || ++y || ++z;P3(x,y,z);
s = 1; ++x && ++y || ++z;P3(x,y,z);
s = 1; ++x && ++y && ++z;P3(x,y,z);
s = -1; ++x || ++y && ++z;P3(x,y,z);
s = -1; ++x || ++y || ++z;P3(x,y,z);
s = -1; ++x && ++y && ++z;P3(x,y,z);
}


谁给我解释一下这个题目是什么意思?
...全文
22 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liuhongjun1979 2004-05-07
恩,楼上的兄弟姐妹们比我讲得清楚,我就不说啦,顶一下
  • 打赏
  • 举报
回复
djwinter 2004-05-07
恩,楼上的兄弟姐妹们已经讲得很清楚了..................
  • 打赏
  • 举报
回复
zhangfjj 2004-05-07
楼上说对了部分.
这考察的是&& ||运算符的短路性
无论是&&还是||都会出现短路的情况.

1.表达式1&&表达式2
当左边为假时,右边不用算了.因为无论右边是多少,结果始终是false.这种特性叫逻辑运算的短路.
2.表达式1||表达式2
这一个楼上说对了,左边为真时,右边不用算了.
  • 打赏
  • 举报
回复
fire314159 2004-05-07
顶一下!!!不做潜水员。透彻
  • 打赏
  • 举报
回复
lwjcn 2004-05-07
没有什么意思
这题考你懂不懂&& ||
&&左右都要算 ||左边判断是真值右边就不用算了
  • 打赏
  • 举报
回复
nobush 2004-05-06
s = 1; ++x || ++y || ++z;P3(x,y,z);
//就是 x = y = z = 1; ++x || ++y || ++z;printf("x = %d\t y = %d\t z = %d\n",x,y,z);
结果 x=2 y=z=1
  • 打赏
  • 举报
回复
languagec 2004-05-06
没什么意思呀
#define s x = y = z
#define P3(x,y,z) printf("x = %d\t y = %d\t z = %d\n",x,y,z)
表示用 x = y = z 代替 s
用 printf("x = %d\t y = %d\t z = %d\n",x,y,z) 代替 P3(x,y,z)
|| 和 && 都是从左算到右的。
|| 碰到1就不计算 ||后面的表达式了
而 && 碰到 0 就不计算 && 后面的表达式了

++x || ++y || ++z; 象这些,就是要你判断在计算了前面的 表达式后会不会再继续计算后面的表达试,这才是 这个题目要特别注意的地方。
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-05-06 10:02
社区公告
暂无公告