關係運算子和邏輯運算子

2021-10-03 10:55:28 字數 3355 閱讀 5720

關係運算子也叫比較運算子,像數學中10 > 9、1 < x < 5等等,表示一種判定關係,給出的這種關係可能是正確的也可能是錯誤的,例如可以有「1 > 2」這種判定,但這是錯誤的判斷。

計算機中也支援這種判定,但結果只有兩種,要麼判斷正確要麼判斷錯誤。

正確則稱為「真」,錯誤則稱為「假」。任意給出這樣乙個判定,要麼為真要麼為假並不會出現其他情況,並且也不會出現相同的判定在一種情況下為真、另一種情況下為假的情況。

c/c++中提供了多種用於判斷兩個表示式關係的運算子:

運算子作用

==判定兩個表示式的值相等

!=判定兩個表示式的值不相等

>

判定左邊表示式的值大於右邊表示式的值

<

判定左邊表示式的值小於右邊表示式的值

>=

判定左邊表示式的值大於或等於右邊表示式的值

<=

判定左邊表示式的值小於或等於右邊表示式的值

其中要注意的是,其中的 >= 實際意思是:大於或者等於只要乙個成立則整個判斷為真(<= 同理),例如:

int a =5;

int b =3;

a > b // 值為真

a >= b // 雖然等於不成立,但大於成立,所以判斷也為真

在數學中,我們可以使用像「1 < x < 4」這種聯合的判定。但c/c++中不能直接這樣使用,例如:

int x =3;

1< x <

4// 這是錯誤的語法

「1 < x < 4」表示的是x > 1 而且 x < 4,要使用這種聯合的判定,要使用邏輯運算子連線多個判定條件。

運算子作用

&&兩個判定條件同時為真則整個判定條件為真,否則為假

||兩個判定條件至少有乙個為真則整個判定條件為真,否則為假

!原判斷條件為真則整個判定條件為假,反之亦然

例如:

int a =1;

int b =4;

int c =7;

(a < b)

&&(b < c)

// 兩個條件均為真,整個判定為真

(a > b)

||(b < c)

// 兩個條件至少乙個為真,整個判定為真

!( a == b)

// 原判定條件為假,整個表示式為真

&& 運算子的特點是:從左到右一次執行各個判斷條件,如果遇到乙個條件為假則判斷整個條件為假,不再執行後面的條件。

|| 運算子的特點是:從左到右一次執行各個判斷條件,如果遇到乙個條件為真則判斷整個條件為假,不再執行後面的條件。

對於一般的條件表示式這並不影響程式執行,但如果有賦值、自增自減表示式則可能影響變數的值,例如:

int a =1;

int b =3;

int c =7;

(a > b)

&&(c =10)

;// c的值為7,c=10不執行

(a < b)

&&(c =10)

;// c=1不執行

c =7

;(a > b)

||(c =10)

;// c的值為7,c=10不執行

(a < b)

||(c =10)

;// c=10執行

語句是c/c++語言中的執行單位,以分號標識一條語句的結束。例如:

int a =10;

// 初始化語句

a =20

;// 賦值語句

;//空語句,什麼也不做

表示式則是由運算子連線起來的各種值(字面量或者變數),表示式的特點是每個表示式都有乙個值。例如:

123

// 字面量本身也是表示式,表示式的值就是變數的值

a // 變數本身也是表示式,表示式的值就是變數的值

a =10

// 賦值表示式的值就是被賦值後該變數a的值

a++// ++在右邊時,自增表示式的值就是a的原值

++a // ++在左邊時,自增表示式的值就是a自增後的值

a > b // 條件表示式的值為判斷結果的值,真或假

a + b // 算數表示式的值為進行算數運算後的結果

要注意,c/c++中值都是有型別的,像之前提到,字面量有自己的識別型別、變數中的值被認為時該變數的型別。

一些表示式的值本身就直接得到,像字面量和變數本身的值。

一些表示式的值是通過計算或執行得到的,像賦值表示式、自增自減表示式、算數表示式、比較表示式都是對該表示式進行了執行、計算、判定之後得到該表示式的結果。

表示式加上分號後可以形成語句,但語句並不都是由表示式形成,例如:

int a =10;

// 初始化語句,但int a = 10 這並不是乙個表示式,其中的a = 10也不應該看作賦值表帶式,因為如果是陣列初始化,陣列名是不能被賦值的。

判斷是不是表示式以及得到表示式的值,只需要將其賦值給乙個變數,例如:

int a =

(int b =10)

;// 錯誤,(int b = 10)並不是表示式

int a,b,c;

a = b = c =10;

// 賦值表示式的值是賦值後變數的值,從右向左依次執行賦值運算並得到表示式的值

int a =

1<2;

// 關係表示式的值要麼為1,要麼為0,分別表示真和假

邏輯運算子連線的可以是條件表示式也可以是其他表示式,例如之前的**:

(a > b)

||(c =10)

;// c的值為7,c=10不執行

(a < b)

||(c =10)

;// c=10執行

這裡c = 10只是賦值表示式,而不是條件表示式但仍能作為邏輯運算子連線的乙個子條件。

在c/c++中,條件表示式的值是int型別整數1或0:

struct mystruct mt =

1>2;

// int 0

struct mystruct mt =

1<2;

// int 1

而其他非條件表示式有自己的值,如果放在條件表示式的位置會根據原表示式的值被判定為真或假,

非0值的表示式被認為是真,0值表示式被認為是假:

1

// 真

a =1

// 真

1.23

// 真

0// 假

0.0// 假

a =0

// 假

關係運算子,邏輯運算子

關係運算子 判斷左邊表示式的值是否 大於 右邊表示式的值 判斷左邊表示式的值是否 小於 右邊表示式的值 判斷左邊表示式的值是否 大於或者等於 右邊表示式的值 判斷左邊表示式的值是否 小於或者等於 右邊表示式的值 判斷左邊表示式的值是否 等於右邊的表示式的值 判斷左邊表示式的值是否 不等於 右邊表示式...

Swift關係運算子和邏輯運算子

關係運算子是比較兩個表示式大小關係的運算,它的結果是true或false,即布林型資料。如果表示式成立 結果為true,為false。關係運算子有8種 和 以let a 6為例。具體說明參見表3 3。表3 3 關係運算子 運算子名稱 例子結果 等於a 4 false 不等於a 4 true 大於a ...

C 關係運算子與邏輯運算子

1.關係運算子 比較運算 關係運算子用於比較兩個值並決定它們的關係,然後給出相應的取值。關係表示式 由關係運算子連線起來的式子。關係表示式的運算結果為 bool 型別,bool 型別只有兩個值 true和false。如果關係運算表示式成立,則這個表示式的值為 true 否則為 false。using...