关于C# 中的布尔运算符 "&" "|” 与 其类似的条件布尔运算符 "&&" "||" 区别说明。

运算符使用说明如下:

 分隔符 ————————————————————————————

分隔符 ————————————————————————————

  上述两个运算符的结果与&和 | 完全相同,但得到结果的方式有一个重要区别:其性能比较好。两者都是检查第一个操作数的值(表2中的var2),再根据该操作数的值进行操作,可能根本就不处理 第二个操作数(表42中的var3)。

  如果&&运算符的第一个操作数是 false,就不需要考虑第二个操作数的值了,因为无论第二个操作数的值是什么,其结果都是 false。同样,如果第一个操作数是 true,|| 运算符就返回 true 后, 无需考虑第二个操作数的值。但上面的&和 | 运算符却不是这样。它们总是要计算两个操作数。

  在大量使用这些运算符的应用程序中这表现得尤为明显。作为一个规则,尽可能使用&&和 || 运算符。这些运算符有时用于比较复杂的情形,例如,只有第一个操作数包含某个值时,才计算第二个操作数:

        var1 = (var2 != 0) && (var3 / var2 > 2);

  如果 var2 是0,则 var3 除以 var2 就会导致“除 0 错误”,或者把 var1 定义为无穷大(对于某些类型如 float 来说,可能出现后一种情形,也是可以检测到的)

  总结:因为操作数的计算是有条件的,如果使用&&和 || 运算符来代替&和 |,性能会有一定提高。

原文地址:https://www.cnblogs.com/JesseP/p/9796498.html

时间: 2024-08-29 23:35:13

关于C# 中的布尔运算符 "&" "|” 与 其类似的条件布尔运算符 "&&" "||" 区别说明。的相关文章

JavaScript中易犯的小错误-------常见错误四:比较运算符

JavaScript中易犯的小错误-------常见错误四:比较运算符JavaScript中一个比较便捷的地方,便是它可以给每一个在比较运算的结果变量强行转化成布尔类型.但是从另一方面来考虑,有时候它也会为我们带来很多不便,下面的这些例子便是一些一直困扰很多程序员的代码实例:console.log(false == '0');console.log(null == undefined);console.log(" \t\r\n" == 0);console.log('' == 0);

未经处理的异常在 System.Data.dll 中发生。其他信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。

机房收费系统中,有些人在联合查询这个模块用的是存储过程,我先尝试着在数据库中建立了一个视图,然后在UI层做个判断并生成查询条件strCondition. 在机房收费系统的"联合查询"模块中出现的问题:"System.Data.SqlClient.SqlException"类型的未经处理的异常在 System.Data.dll 中发生.其他信息: 在应使用条件的上下文(在 '@strCondition' 附近)中指定了非布尔类型的表达式. 出错的DAL层代码为: Pu

在VBA中进行字符串比较时,会用到比较运算符

通常,在VBA中进行字符串比较时,会用到比较运算符(如=.>等).Like运算符和StrComp函数.此外,在模块的开头用Option Compare语句指定比较方式.2.1.1 比较运算符可以采用简单的逻辑运算符进行两个字符串的比较,即<(小于).<=(小于或等于).>(大于).>=(大于或等于).=(等于).<>(不等于).此外,还可以使用Like运算符进行比较.2.1.2 StrComp函数StrComp函数返回字符串比较的结果.其语法为:StrComp(s

python入门之类型、条件、运算符、流程控制之if判断

1:可变.不可变类型 可变类型:值改变,id不变,原值可以被修改 可变类型包括:list,dict l = [111,222,333] print(id(l)) l[0] = 444 print(l) print(id(l)) # l中的第一个内容被修改,但两个结果id是相同的 dic = {'k1':111,'k2':222} print(id(dic)) dic['k1'] = 3333333333 print(dic) print(id(dic)) # dic中的'k1'被修改,但是两个结

JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * 这里需要注意 a++ 和 ++a 的区别,后面说; */ /* public class Javase{ public static void main(String[] args){ int a = 10; int b = 20; int c = 30; System.out.println( a

c# 中面相对性的三个特点:封装,继承,多态, 以及c#中隐藏(new)和方法重写(override)和重载(overload)的区别

封装 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3) 访问修饰符 声明的可访问性                                 含义 public                                    访问不受限制. protected                              访问仅限于本类或者其子类(可以跨程序集). p

JS中innerHTML、outerHTML、innerText 、outerText、value的区别与联系? jQuery中的text()、html()和val()

一.JS中innerHTML.outerHTML.innerText .outerText.value的区别与联系?jS中设置或者获取所选内容的值:①innerHTML :属性设置或返回该标签内的HTML.也就是从对象的起始位置到终止位置的全部内容,包括Html标签.②outerHTML:属性设置或返回该标签及标签内的HTML.也就是从对象的该标签起始到终止位置的全部内容,包括Html标签.如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后,再用正则表达式去

数据库中的左连接(left join)和右连接(right join)区别

Left Join / Right Join /inner join相关 关于左连接和右连接总结性的一句话: 左连接where只影向右表,右连接where只影响左表. Left Join select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID 左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据. 简言之 Left Join影响到的是右边的表 Right Join select * from tbl1 Rig

25 Android中dip、dp、sp、pt和px的区别

http://blog.sina.com.cn/s/blog_6499f8f101014ipq.html 25 Android中dip.dp.sp.pt和px的区别,布布扣,bubuko.com