这是一道简单的面试题

前言

前几天,有个学员跟我说了一道面试题,很简单,但是可能也会有一些人不知道,所以跟大家分析一下。

或运算中,| 和 || 有什么区别?

分析

我们都知道,|和||这两个运算符都可以用来表示或运算,那么他们之间有什么区别呢?

首先,对于值类型来说,我们只能用|来进行位运算,但是对于布尔类型来说,|和||都可以,所以这是他们的区别之一,|既能用于值类型,也可以用于布尔类型,但是||只能用于布尔类型。

 

 

 

 

其次,既然|和||都可以用于布尔类型,那么两者有没有什么区别呢?

写了一段简单的代码,如下图所示:

 

 

如果我们使用||,运行时会发现,Get1方法里的断点可能正常进入,而Get2方法里的断点不会进去,因为对于或运算,当检测到Get1返回值为True之后,不管后续的结果是True还是False,结果均为True,所以就不会进入Get2方法内部了。

如果将Get1的返回值改成False,那么还是会进入Get2方法的。

 

 

同样的代码,如果将 || 改成 | ,我们会发现,无论Get1返回True或False,两个方法里的断点,都会进入。

 

 

所以,总结就是||会根据前面的执行结果动态执行后面的代码,而|不管前面的执行结果如何,都会执行后面的代码。

同理,对于&和&&也是同样的区别。

posted @ 2022-09-13 17:26  常哥说编程  阅读(130)  评论(0编辑  收藏  举报