逻辑运算符学习笔记
逻辑运算符
c语言中的逻辑运算符有&&(逻辑与)、||(逻辑非)、!(逻辑或)。其运算规则如下表
运算符 | 描述 | 实例 |
---|---|---|
&& | 如果两个操作数都为真,则条件为真,否则为假。 | (A && B) 为假。 |
|| | 如果两个操作数中有任意一个为真,则条件为真,否则为假。 | (A || B) 为真。 |
! | 用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |
实例
#include<iostream>
using namespace std;
int main(){
int a = 1;
int b = 2;
int c;
if(a && b){
printf("a&&b为真\n");
}else{
printf("a&&b为假\n");
}
if(a || b){
printf("a||b为真\n");
}else{
printf("a||b为假\n");
}
if(!(a && b)){
printf("a&&b为真\n");
}else{
printf("a&&b为假\n");
}
return 0;
}
运行结果如下:
另外值得一提的是逻辑运算符的短路特性,短路特性是指如果能够同过某一个条件得知整个表达式的真假情况,将不再进行下一步的运算,比如说a&&b,如果a为假,则整个式子为假,将不再对b进行判断。
实例:
#include<stdio.h> int main(){ printf("%d\n",3/0); return 0; }
运行上面代码,编译器会报错:
"message": "division by zero [-Wdiv-by-zero]"
意思是0不能被用来当除数
而运行下面代码:
1 #include<stdio.h> 2 3 int main(){ 4 int a = 0; 5 int b = 2; 6 if(a && (b/0)){ 7 printf("yes\n"); 8 }else{ 9 printf("no\n"); 10 } 11 return 0; 12 }
得到的结果为:
通过了编译,证明了逻辑运算符的短路特性。当然逻辑或同理。
以上就是我对逻辑运算符的一些认识,如果错误之处,敬请指正。