黑马程序员技术交流社区
标题: &&和&||和|有什么区别? [打印本页]
作者: 小周学诚 时间: 2013-7-27 17:33
标题: &&和&||和|有什么区别?
&&和&||和|有什么区别?
作者: 马晓凤 时间: 2013-7-27 18:19
本帖最后由 马晓凤 于 2013-7-27 18:21 编辑
&:
1 &是位运算,按位与,参与运算的一般是两个整数。例如:5 & 3,由于5的二进制码是0101,3的二进制码0011,那么0101 & 0011 = 0001,所以结果就是1。
2 &也可以用作两个bool型数据的运算,同样,当两边都是ture,结果才是true,不过&在bool型数据运算时,不存在快速运算法则。比如:x&y:即使x是false,也会计算y表达式的
3 作为一元运算符时,(&) 也可作为一元运算符,返回操作数的地址
&&:&&有一个快速运算法则:当&&的左边计算的结果是false,那么无论右边表达式的结果是什么,&&的结果一定是false,此时,&&右边的表达式根本不会去运算。如果此时&&右边是一个函数调用,那么这个函数就不会被调用。(和&的区别)
class Test
{
static bool fn1()
{
Console.WriteLine("第一个操作数执行了");
return false;
}
static bool fn2()
{
Console.WriteLine("第二个操作数执行了");
return true;
}
public static void Main()
{ Console.WriteLine("result is {0}", fn1() & fn2());
Console.WriteLine("result is {0}", fn1() && fn2());
Console.ReadKey();
}
|和||同理
| 操作符
1 对于整型,| 计算两个操作数的按位“或”结果。
2对于 bool 操作数,| 计算操作数的逻辑“或”结果;只有当两个操作数均为 false 时,结果才为 false。不存在当第一个操作数为true时就不计算第二个了
||
bool 操作数,只要第一个为true,第二个就不计算了
作者: Joesph 时间: 2013-7-27 18:57
&&具有短路功能,如果第一个表达式为false,那么就不用执行第二个表达式,结果就是false 同理||也是这样 如果第一个表达式为true,那么就不用执行第二个表达式,结果是true
作者: 高文咪 时间: 2013-7-27 19:35
&&在程序中是且的意思,前后的表达式必须都得满足才可以执行里面的代码。例如:
if(a==‘’ && b==‘’)
{
执行代码;
}
在这段程序中,只有同时满足a==‘’ 与b==‘’两个条件,里面的代码才会执行,否则就不会执行;
“|” 是用来计算操作数的按位“或”结果,即使第一种情况存在,也要判断第二种情况;
“||”这个是或运算符,与上面的&&用法类似,其是在条件只要满足一个的情况下,就会执行里面的代码;如果第一个判断符合后面的就不会执行,直接执行里面代码;记住只要满足一个条件就可以执行里面的代码哦;
作者: 孔健 时间: 2013-7-27 22:16
与、或的短路问题,详细请看苏坤老师的c#编程基础第14节“逻辑表达式关系表达式习题”的视频教程。
作者: 独世 时间: 2013-7-29 16:00
&、|和&&、||的区别:
&&、||在有些时候只计算一边表达式就可以得出整个表达式的结果,这时候另一边的表达式就会忽略不计算。
表达式1&&表达式2:如果表达式1为false,整个表达式的结果为false,则第二个表达式就不再计算,在&&中两边有一边是错的整个就是错的。
表达式1||表达式2:如果表达式1为true,整个表达式的结果为true,则第二个表达式就不再计算,在||中两边有一边是对的整个就是对的。
表达式1&表达式2:两个表达式都计算出结果。
表达式1|表达式2:两个表达式都计算出结果。
逻辑与的短路
int a=10;
int b=5;
bool result= ++a>50 && ++b>1;
这时候如果输出结果a=11,b=5,按照正常应该是b=6,但是逻辑与中前面的关系表达式的结果为false,在逻辑与中只要有一个是错的整个就是错的,后面的关系表达式不需要运算就可以得出结果,整个逻辑表达式是错的,所以计算机就没有计算后面的关系表达式。在逻辑与中只有第一个关系表达式成立,计算机才会运算第二个关系表达式。
逻辑或的短路
int a=10;
int b=5;
bool result= ++a>5|| ++b>1;
这时候如果输出结果a=11,b=5,按照正常应该是b=6,但是逻辑或中前面的关系表达式的结果为true,在逻辑或中只要有一个是对的整个就是对的,后面的关系表达式不需要运算就可以得出结果,整个逻辑表达式是对的,所以计算机就没有计算后面的关系表达式。在逻辑或中只有第一个关系表达式不成立,计算机才会运算第二个关系表达式。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |