前言

一、人物簡介
- 第一位閃亮登場,有請今后會一直教我們C語言的老師 —— 自在,

- 第二位上場的是和我們一起學習的小白程式猿 —— 逍遙,

二、構成和表示方式
- 邏輯運算子是用來比較和操作布林值的運算子
- C語言中的邏輯運算子主要有3個,如下表所示
| 運算子 | 名稱 | 示例 | 描述 |
|---|---|---|---|
| && | 與 | a && b | 當a和b都為真時,回傳真 |
| || | 或 | a || b | 只要a或者b,其中任何一個為真,回傳真 |
| ! | 非 | !a | 如果a的條件為真,回傳假 |
- 邏輯運算子的兩邊可以是變數、數值 或 運算式
?? 變數
a && b
a || b
!a
?? 數值
5 && 3
20 || a
!0
?? 運算式
a+b && c
a-b || c-a
!(a+c)
三、邏輯運算子的應用
1、運算結果
邏輯運算子的運算結果為0(假)或者1(真)
- 當條件成立時結果為
真,條件不成立結果則為假,
1.1 與運算
- 實體演示
#include <stdio.h>
int main() {
printf("1 && 2 結果為%d\n", 1 && 2);
printf("0 && 3 結果為%d\n", 0 && 3);
printf("5 && 0 結果為%d\n", 5 && 0);
printf("0 && 0 結果為%d\n", 0 && 0);
return 0;
}
- 運行結果

1.2 或運算
- 實體演示
#include <stdio.h>
int main() {
printf("1 || 2 結果為%d\n", 1 || 2);
printf("0 || 3 結果為%d\n", 0 || 3);
printf("5 || 0 結果為%d\n", 5 || 0);
printf("0 || 0 結果為%d\n", 0 || 0);
return 0;
}
- 運行結果

1.3 非運算
- 實體演示
#include <stdio.h>
int main() {
printf("!2 結果為%d\n", !2);
printf("!0 結果為%d\n", !0);
return 0;
}
- 運行結果

!! ,將任何值轉換為布林值
!!可以將一個整數、字符或指標值轉換為一個布林值,
例如,下面的代碼片段中,將字串轉換為布林值,并將其用于條件判斷:
#include <stdio.h>
int main()
{
char *str = "hello";
int bool_value = https://www.cnblogs.com/Wayne123/archive/2023/04/06/!!str;
if(bool_value)
{
printf("str is not null\n");
}
else
{
printf("str is null\n");
}
return 0;
}
- 運行結果

由于hello是一個非空字串,所以!!將其轉換為1,if條件陳述句的條件將被認為是真,所以第一個printf陳述句將被執行,
反之,如果字串“str”為NULL,則!!將其轉換為0,if條件將被認為是假,第二個printf陳述句將被執行,
2、運算子嵌套
-
邏輯運算子是允許嵌套使用的,運算的結果可以繼續作為邏輯運算子的一個引數
-
實體演示
#include <stdio.h>
int main() {
int a = !( (6 > 3) && (11 - 20) && (0 - 1) );
int b = !( (5 + 4) && (7 - 8) && (3 < 2) );
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
- 運行結果

?? 第一個嵌套運算式分析
- 因為
6 > 3的結果為1,11 - 20的結果為-9,所以(6 > 3) && (11 - 20) && (0 - 1)等價于1 && -1,結果為1 - a =
!(1),結果為0
??第二個嵌套運算式分析
5 + 4的結果為1,7 - 8的結果為-13 < 2的結果為0- 所以
(5 + 4) && (7 - 8) && (3 < 2)等價于9 && 0,結果為0 - a =
!(0),結果為1
3、優先級
- 先來看這個實體
#include <stdio.h>
int main() {
int a = !( 1 || -1 && 0 );
printf("a = %d\n", a);
return 0;
}

- 那么實際的運行結果如何呢?


- 因為
&&的優先級高于||,所以-1 && 0會被先運算,結果為0 1 || -1 && 0等價于1 || 0,結果為1- a =
!(1),結果為0
邏輯運算子的優先級順序為 ∣∣ < && < !
有興趣的小伙伴可以參考上面的代碼來驗證&&和!的優先級關系哦!
小結
通過本文的講解,我們學會了3種邏輯運算子的使用方法及優先級關系,下一篇文章,我們將講解位運算子,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549277.html
標籤:其他
下一篇:Java筆記(11) 多執行緒
