操作目录

  • 逻辑或运算的简单例题"||"
    • 题目
    • 解析
    • 总结

逻辑或运算的简单例题"||"

题目

若有变量声明如下:
int x =5,y = 7,z = 8;
执行表达式:z += x++||y++||++z;后,x,y,z 的值分别是( )。
A.6,7,9
B.6,8,10
C.6,8,8
D.6,8,1

解析

题目解析如下
答案:A
 解析:首先我们要知道逻辑或运算“||”具有短路运算的性质,即在判断“||”左右两侧的式子时,一般来说顺序是依次从左往右执行的,但由于短路运算性质,如果“||”左侧的式子为真,那么该逻辑或运算返回的结果即为左侧这个表达式的值,且“||”右侧的式子便不再继续执行,但是并不是说一个逻辑或右侧其他的运算表达式都不用继续计算了,而是仅当前这个逻辑或运算符“||”两侧的两个表达式所形成的一个结果成为一个新的值,如果右侧还有“||”,则继续按照此原则继续运算,直到所有运算都完成才返回最终结果。这便是在本题所遇到的情况。

 首先我们需要知道的是,在“z += x++||y++||++z;”这条语句没有彻底执行结束之前,x++、y++、z++这三条语句的结果,只有z发生了变化,即自加1了,请注意,这里我们并没有真正运行完这条语句,这是我们分析的,因为题目所要求的是整条语句完全运行结束后x、y、z的值。如果这三条语句全部执行了,那么当这一整个大的语句执行后,x、y、z的值是一定发生了变化的,但是如果没有,那么我们就要看具体执行哪些语句。
现在我们继续来看“z += x++||y++||++z;”这条语句,先看等号右边,有两个逻辑或运算符“||”,就要先从左边第一个“||”表达式开始看,(x++)在这里x的值并没有发生改变,所以x依然是5,即为真1,此时第一个逻辑或表达式的值就出来了,即为真1,y++并没有执行,所以y的值并没有改变,还是7;

 最后就是判断z的值发生了哪些变化了,我们可以看到z在这条语句中发生了两次改变,第一次是等号右边的z++,第二次是等号左边的自加一个数,加的这个数是看我们右边表达式的结果的,所以我们继续分析右边的运算,既然我们上一步已经得到了第一个逻辑或的运算结果为真1了,并且在右边第二个也是逻辑或的情况下,我们就没必要再分析一遍了,直接同理就可以得出等号右侧整个表达式的结果为真,即1,然后就变成了z += 1;执行后z = 9;

 当整个过程分析过后,我们知道了在x++、y++、z++这三条语句中,只有x++执行了,执行前x = 5,整个“z += x++||y++||++z;”语句彻底执行后,x = 6,y = 7 ,z = 9 。

总结

 其实这里的过程写的比较冗杂,但实际代码的运行如果理解的话笔者上面的一大篇幅解释其实并不用看,很容易就能得出答案,这里解释得有些过于冗多反而可能会让一些初学者觉得难以理解,其实并不是的,笔者只是为了更加详细地描述出具体的分析过程,便将其中的分析过程都较为细致地描述了下来。
 总结下来一句话,逻辑或,左式为真,右式不运算,整个都为真。对于逻辑与也是类似的,相关注意点大家可以下去查阅哦~

好了,关于本题的解析到这里就介绍完毕了,感谢您的阅读!如果有疑问的地方欢迎在评论区留言评论。

一道简单的逻辑运算题相关推荐

  1. A. 这是一道简单的水题~

    A. 这是一道简单的水题~ pbz最近沉浸在数学中无法自拔,他发现了一种非常有趣的数,这个数的十进制表示形式中只含有8和9,这个数有着很好的寓意,代表了pbz的梦想和期望,他想知道对于任意的给定的正整 ...

  2. CTF easy_maze 一道简单的迷宫题。

    CTF easy_maze 一道简单的迷宫题. 打开IDA进行分析. 定位到main函数 查看程序 在main函数中查看子方法 这里发现如是遇字母"o"则退出,查看unk_400A ...

  3. qduoj 一道简单的数据结构题(水题)

    题目链接:https://qduoj.com/problem/147/点击打开链接 一道简单的数据结构题 发布时间: 2017年6月3日 18:46   最后更新: 2017年6月3日 18:51   ...

  4. 一道简单的编程题,不过您做对了吗?

    转老赵点滴 - 追求编程之美 2009-05-27 19:45 by Jeffrey Zhao, 25031 阅读, 156 评论, 收藏, 编辑 CSDN学生中心是个好地方,如果善于利用,应该能够对 ...

  5. 一道简单的编程题考核你的编程功底

    上周有位工作了3年多的程序员(一直在企业做应用开发)来面试,本来打算不安排上机编程的,但是他开出了6K的薪资要求,我还是决定考核下他的编程功底. 刚好最近企业在做生产流程信息流对接这块的开发,我就提取 ...

  6. 给准备做测试的亲友出了一道简单的求和题

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 在1-99,小于或等于10的(譬如:1+2+...+10),全部相加:大于10的,十位数如果是奇数的,就算他们之 ...

  7. [Java 一道简单的排序题]

    在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 第一行有两个整数,分别是学生的人数n(1≤n≤100)n(1≤n≤100),和求第k名学生的k(1≤k ...

  8. 一道简单的推理题(日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个)

    题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个.            以下为4个嫌疑犯的供词.           A说:不是我.           B说:是C.   ...

  9. 一道非常简单的签到题

    链接:https://ac.nowcoder.com/acm/problem/22808 来源:牛客网 ················································ ...

最新文章

  1. 基于matlab的硅晶体模型,基于Matlab的图像处理技术识别硅太阳电池的缺陷
  2. VS Code报错解决:Error: end of central directory record signature not found
  3. yxw.Permission.init
  4. chrome浏览器插件开发经验(一)
  5. esp32cam与下载板的实际有效接线图
  6. FZOJ 2014年11月份月赛 ytaaa(dp + RMQ)
  7. 上周末Jscex项目介绍的幻灯片
  8. [testNG]Cannot find class in classpath解决方法
  9. 直线算法(Bresenham)
  10. nginx+php fpm日志报错信息
  11. 简明Python教程链接
  12. Qt 3D Opengl学习
  13. 如何利用SFTP在远程服务器中保障文件传输安全
  14. 【浏览器修改请求头】该地址不支持在浏览器打开,如需访问, 请使用微信扫描下方二维码
  15. centos安装LDAP即配置
  16. USB扫码枪二维码读取(二)——MFC篇
  17. Soul瞬间发布长视频教程
  18. 禁用微信浏览器字体调整的方法
  19. 【基于UDP的网络聊天室】
  20. Android开发艺术探索读书笔记(二)

热门文章

  1. 每日辣评:快手和抖音、爱奇艺巨亏、搜狗输入法变声功能、贝佐斯
  2. 机智云AIoT开发平台,物联网开发和运营从未如此简单
  3. 云主机装黑果实践(6):处理云主机上变色龙启动后置过程:驱动和黑屏
  4. 服务器跑项目,如何使用远程服务器跑项目
  5. 双目立体视觉(3)- ZED2 ROS Melodic 发布RGB图像及深度信息
  6. DataWhale Golang(十、异常处理)
  7. VB问题——ByRef参数类型不符
  8. com.baomidou.mybatisplus.core.exceptions.MyBatisPlusException: java.net.UnknownHostException
  9. 我把B站番剧的视频和弹幕一起下载下来了……
  10. java集成kettle 9.2.0开发