这是一道简单的面试题
前言
前几天,有个学员跟我说了一道面试题,很简单,但是可能也会有一些人不知道,所以跟大家分析一下。
或运算中,| 和 || 有什么区别?
分析
我们都知道,|和||这两个运算符都可以用来表示或运算,那么他们之间有什么区别呢?
首先,对于值类型来说,我们只能用|来进行位运算,但是对于布尔类型来说,|和||都可以,所以这是他们的区别之一,|既能用于值类型,也可以用于布尔类型,但是||只能用于布尔类型。
其次,既然|和||都可以用于布尔类型,那么两者有没有什么区别呢?
写了一段简单的代码,如下图所示:
如果我们使用||,运行时会发现,Get1方法里的断点可能正常进入,而Get2方法里的断点不会进去,因为对于或运算,当检测到Get1返回值为True之后,不管后续的结果是True还是False,结果均为True,所以就不会进入Get2方法内部了。
如果将Get1的返回值改成False,那么还是会进入Get2方法的。
同样的代码,如果将 || 改成 | ,我们会发现,无论Get1返回True或False,两个方法里的断点,都会进入。
所以,总结就是||会根据前面的执行结果动态执行后面的代码,而|不管前面的执行结果如何,都会执行后面的代码。
同理,对于&和&&也是同样的区别。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2021-09-13 FinsTCP协议报文详细分析