逻辑运算是对逻辑量进行的运算,结果只有1和0。逻辑量是逻辑运算和关系运算的结果。
当然,逻辑运算是很实用的东西,比如,想要表示数学区间,例如整数a∈[3,10),应该怎么表示呢?写出3<=x<10计算机是不会认的,他会进行运算得出x>=3是一个逻辑运算,只会得出0或1。
区间的含义就是这个数要大于最小值小于最大值,我们可以用逻辑运算符&&来写出区间,写法是这样的:
a>=3&&a<10
即要a同时满足这两个条件。这样表示在逻辑bool逻辑判断或是if判断甚至是循环里相当重要,例如:
While(a>=1&&a<6)
{
If(a%2==1)
{
a=a+1;
}
Else
{
a=a+2;
}
}
这样就可以表示a的取值范围了。
当然,逻辑运算不仅能判断数字,也可以判断字符。比如判断一个字母是否是大写字母,可以这样表示:
c>=’A’&&c<=’Z’
如果字符c在大写字母A和Z之间,那么它就是一个大写字母啦。
请看下面这种情况:
!a>20
这会是a小于等于20吗?
当然不是,运算是从左到右的,!a的结果只能是1或0,经过逻辑运算之后仍旧是1或0。
逻辑运算也有优先级,遵从这样的关系:
!>&&>||
在逻辑运算中,如果左边已经能够得到确定的结果了,就不会进行右边的运算,所以这种代码是不可以实现的:
Int a=2,b=3;
a==1&&b==1;
&&想要成立的条件是两边都必须是true才行,当左边的a!=1成为既定事实,无论右边如何都不会进行判断。不仅如此,左边成立不成立之后也会跳过右边的运算,比如:
Int a=2,b=3;
a==1&&b=++;
因为a不等于1,所以b++也不会被执行
同样的,如果对于||,左边已经正确就不会进行右边的计算和判断。这个东西被称为短路。所以,为了保证不会出现短路,通常要尽可能避免把赋值和复合赋值组合进表达式里。
| 运算符 | 描述 | 实例 | 结果 | | ! | 逻辑非 | !a | 如果a的结果是true则变为false,false变为true | | && | 逻辑与 | a&&b | 如果ab都是true,则结果为true,否则为false | | || | 逻辑或 | a||b | 如果ab都是false,则结果为false,否则为true |