tft每日頭條

 > 生活

 > c語言操作符重載的教程

c語言操作符重載的教程

生活 更新时间:2024-09-16 00:23:18

c語言操作符重載的教程(第四節C語言基礎)1

一、逗号操作符

1.1 它可以用來連接兩個不同的表達式 形成一個複雜的表達式;

1.2 使用 ,操作符編寫的表達式結果是其中一個表達式的結果;

1.3 它的優先級非常低, 比賦值操作符低;

num = 2 5, 8 - 1;

結果: num = 7

二、賦值操作符

2.1 可以在一條語句中使用多個賦值操作符, 會先計算右邊的賦值操作符;

2.2 賦值操作符本身可以當數字使用, 這個數字就是賦值完成後左邊存儲區裡的數字;

2.3 絕大多數運算操作可以與賦值操作符構成複合賦值操作符, 例如: /= , -= 等;

2.4 任何操作符和賦值操作符合并後優先級都降低且與賦值操作符一樣;

三、布爾值:

3.1 有 真(true), 假(false)兩種, 計算機裡使用1表示真, 0表示假;

3.2 c語言可以把任何一個整數當成布爾值, 非0為真;

四、自增操作符

4.1 自增操作符( ): 可以把一個存儲區裡的内容做加一操作;

c語言操作符重載的教程(第四節C語言基礎)2

五、自減操作符

5.1 自減操作符(--): 可以把一個存儲區裡的内容做減一操作;

不要在一條語句中對同個存儲區多次進行自增或自減計算, 結果不确定

c語言操作符重載的教程(第四節C語言基礎)3

六、邏輯操作符

6.1 邏輯表達式計算的結果隻能是布爾值

6.2 雙目邏輯操作符包括: ==(等于), !=(不等于), >(大于), <(小于), >=(大于等于), <=(小于等于);

6.3 單目邏輯操作符 '!' : 它表示求反操作符

例:

printf("%d\n", !9);

結果: 0

6.4 邏輯表達式優先級比算術操作符優先級低

例:

printf("%d\n", 1 2 > 4 5);

結果: 0

6.5 以上邏輯操作符隻能編寫包含單個雙目邏輯操作符的表達式

例:

printf("%d\n", 3 < 7 < 5);

結果: 1

6.6 與(&&)和或(||)可以用來連接兩個簡單邏輯表達式構成複雜表達式;

6.7 使用或(||)構成的邏輯表達式, 隻要有一個簡單邏輯表達式的計算結果是假則整個的結果就是假, 簡單邏輯表達式的結果都是真時結果才是真

6.8 使用與(&&)構成的邏輯表達式, 隻要有一個簡單邏輯表達式的計算結果是真則整個的結果就是真, 簡單邏輯表達式的結果都是假時結果才是假

例:

printf("%d\n", 3 < 7 && 7 < 5);

結果: 0

6.9 邏輯操作符具有短路特征, 即确定結果後,後面的表達式不再計算

例:

int num = 10;

0 && num; //0 與 任何數 結果都是0, 故num沒有做 操作

printf("%d\n", num)

1 || num; //1 或 任何數 結果都是1, 故num沒有做 操作

printf("%d\n", num)

結果:

10

10

七、位操作符

7.1 按位與(&), 按位或(|), 按位異或(^)

7.2 首先把兩個數字都轉換成二進制補碼, 然後把他們對應數位上的數字進行計算;

c語言操作符重載的教程(第四節C語言基礎)4

八、移位操作符

8.1 移位操作符可以把一個數字的所有二進制數位統一向左或者向右移動n個位置;

8.2 左移操作使用<<表示, 右移操作使用>>表示;

8.3 寫在移位操作符左邊的數字是将要進行移位操作的數字, 寫在右邊的數字是移動的位數;

8.4 移位操作不會修改任何存儲區裡的内容;

例:

int num = 10;

num << 2;

結果:

num = 10

8.5 如果在移位過程中沒有丢失有效數據位, 則左移n位相當于乘以2的n次方, 右移n位相當于除以2的n次方;

8.6 左移時右邊會出現空位置, 這些位置上要填充0, 無符号數據右移時左邊補充0, 有符号數據右移時左邊補充符号位;

例:

int num = 10;

printf("%d\n", num << 2);

結果:

40 = 10 * 2^2

--------------------------------

例:

char ch = 200;

printf("%hhd", ch >> 2);

結果:

-14

練習:

一個字節占8位, 把數字7放進一個字節的前4位, 把數字5放進一個字節的後四位:

char ch = 0;

ch |= 5;

ch |= (7 << 4);

九、其他操作符:

9.1 ~操作符: 它可以對字節中的所有二進制數位逐個求反, 這個操作符叫做按位求反;

9.2 &操作符: 可以獲得一個變量對應存儲區的地址, 必須和存儲區使用, 可以使用%p作為占位符把地址數據打印出來;

int num = 0;

printf("%p", &num);

9.3 *操作符: 可以根據地址數據找到對應的存儲區;

int num = 0;

*(&num) = 10;

計算機中為每個字節分配一個地址, 一個存儲區是由多個相信字節拼湊的, 存儲區的地址是其中最前邊字節的地址(這個字節的地址最小);

十、三目表達式:

10.1 格式: 布爾值 ? 表達式1 : 表達式2

10.2 如果布爾值為真則采用前面的表達式進行計算, 否則采用後面的表達式進行計算;

練習:求一個數的絕對值

int num = 6;

num = (num >= 0 ? num : 0 - num)

printf("%d\n", num);

結果:6

下面是網上總結的 操作符優先級

c語言操作符重載的教程(第四節C語言基礎)5

c語言操作符重載的教程(第四節C語言基礎)6

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved