C语言之逻辑运算符

160 阅读1分钟

一.逻辑运算符

判断真假 结果只能为真(1),假(0),且表达式非0即真

表示真:非0

表示假:0,“\0”(空字符)

1.或 :表达式1 || 表达式2

规则:有一个为真,结果就是真;全部是假的,结果输出假

例如以下代码:

#include<stdio.h>

int main(){
   	printf("%d \n", 1 > 0);// 1
	printf("%d \n", 1 < 0);// 0
	printf("%d \n", 1 < 0 || 1 > 0);// 1
	printf("%d \n", 1 || 1 > 3); //1
	printf("%d \n", 0 || 1 > 3); //0
	printf("%d \n", 1.2 || 5.6); //1
    }

结果如图所示:

image.png

2.于:表达式1 && 表达式2

规则:全是真,结果为真;一个为假。结果为假

例如以下代码:

#include<stdio.h>

int main(){
    printf("%d \n", 1 < 0 && 1 > 0);// 0
    printf("%d \n", 1 < 2 && 5 > 3);// 1
    printf("%d \n", 1 < 0 && 1 > 0);// 0
    }

结果如图所示:

image.png

3.非:!表达式

规则:取反,假的取真;真的取假 (包括取反再取反)

例如以下代码:

#include<stdio.h>

int main(){
    printf("%d \n", ! (1 > 0));// 0
    printf("%d \n", ! 0 );// 1
    printf("%d \n", ! 0.01);// 0
    printf("%d \n", !!2 );// 0
    }

运算结果如下图所示:

image.png

特殊:

逻辑运算符的短路:

如果“&&”运算符左边的值为假,就不再对其右边的表达式进行计算,整个表达式的结果为假.

如果“||”运算符左边的值为真,就不再对其右边的表达式进行计算,整个表达式的结果为真.

例如以下代码:

#include<stdio.h>
   int main(){
   
   int i = 0;
   2 > 3 && (i = 1);
   printf("%d \n", i); // 0
	
   int j = 0;
   3 > 2 || (j = 1);
   printf("%d \n", j); // 0 
}

运算结果如图所示:

image.png