请问这是什么原因啊?

wildwolfczz 2003-02-16 06:47:54
int x=1,z=1,y=1,k;

k=x++||++y&&++z;

请问运行后,y怎么还是等于1啊?
请教高手了,谢谢!!
在线等待!!
...全文
25 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Riemann 2003-02-18
  • 打赏
  • 举报
回复
对于或运算 exp1||exp2,若exp1已求得为1,则exp2将不再被计算。
Jinhao 2003-02-16
  • 打赏
  • 举报
回复
||是或操作符,它返回的是1,这时不管后面的&&操作符返回的是1还是0,它都能满足||返回为0,在这种情况下,编译器就忽略了后面的&&操作符,故y=1
wildwolfczz 2003-02-16
  • 打赏
  • 举报
回复
谢谢2位了,我懂了!
积木 2003-02-16
  • 打赏
  • 举报
回复
这个就叫短路求值了,你得了解几个规则
首先你得对&&运算符有一定得了解,&&是只有位于左边得第一个运算对象为true时才会对第二个求值
相应的||这个运算符只是在第一个运算对象得到false才会对第二个运算对象求值
看你这个题,因为x!=0所以它为ture 所以||后面的++y就不会被执行了
gq00001 2003-02-16
  • 打赏
  • 举报
回复
先算x++非0即1因为是或所以不用算++y,1再与++z与.

69,373

社区成员

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

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