一个比较迷惑的问题?

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);
}


谁给我解释一下这个题目是什么意思?
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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; 象这些,就是要你判断在计算了前面的 表达式后会不会再继续计算后面的表达试,这才是 这个题目要特别注意的地方。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧