C語言從零到入門 第八節 變數間的運算與型別轉換

2021-10-06 20:43:20 字數 3269 閱讀 4698

運算子的「目」:

x目運算子就是需要x個變數參加運算的運算子,例如數學中的「加號」就是二目運算子,因為它需要兩個變數參加運算,即兩個加數。

符號

功能說明

優先順序+

加號二目1-

減二目1*

乘二目2/

除二目2%

取餘二目

2

「%「是取餘運算子,它的作用是使兩個整數相除,取其餘數。

例如:5%3 的值是 2, (5 ÷ 3 = 1…2)

5%2 的值是 1, (5 ÷ 2 = 2…1)

符號

功能說明

優先順序+

正號單目3-

負號單目

3說明:

說明:它們都是單目運算子

用法:a++ 相當於 a = a + 1

a-- 相當於 a = a - 1

說明:a++ 與 ++a的區別

a++:先執行完當前語句,再使a加1

#include

void

main()

++a:先使a加1,再執行當前語句

#include

void

main()

a–和--a區別與此相同

位運算子只能用於整數,不能用於小數

位運算子的優先順序比較複雜,暫不做說明

位運算子的使用

假設以下例子中使用的型別都是unsigned char

>>:位右移

示例:4 >> 1 的值為2

計算過程:

將4轉為二進位制 0000 0100

整體向右移動1位得 0000 0010 (前面補0)

將結果轉為10進製即為2

<<:位左移

示例:2 << 1的值為4

計算過程:

將2轉為二進位制 0000 0010

整體向左移動1位得 0000 0100 (後面補0)

將結果轉為10進製即為4

^:位異或

說明:如果對應為相同,則為0,否則為1

示例:2 ^4 的值為6

計算過程:

0000 0010 (2的二進位制)

0000 0100(4的二進位制)

0000 0110 (結果為6)

&:位與

說明:如果對應都是1,則為1,否則為0

示例:2 & 4的值為0

0000 0010(2的二進位制)

0000 0100(4的二進位制)

0000 0000(結果為0)

|:位或

說明:如果對應都是1,則為1,否則為0

示例:2 | 4 的值為6

0000 0010(2的二進位制)

0000 0100(4的二進位制)

0000 0110(結果為6)

~:位取反

說明:對應位1變0,0變1

示例:~4 的值是 251

0000 0100 (4的二進位制)

1111 1011 (將各位取反,轉換為十進位制,結果為251)

有些同學可能會發現上面的表示式有一些結果是「錯誤的」

例如:printf("%d", ~4) 的輸出結果是 -5 而不是 251 ,這是為什麼呢?

這就要涉及到c語言中的「變數提公升」了,我們會在本篇文章的最後一小節學習它。

符號功能

說明優先順序

=賦值運算二目0

賦值運算子即將「=」右面的值賦給左面的變數,它的優先順序是最低的。

符號:+=、-=、*=、/=、%=、&=、|=、<<=、>>=

優先順序:0

說明:二目運算子

復合賦值運算子就是一些二目運算子與「=」的結合,他們的優先順序都是0

例如:a += 6 相當於 a = a + 6

a *= 2 相當於 a = a * 2

變數提公升

c語言中各型別的優先順序從高到低依次為:

long double、double、float、 unsigned long long、long long、unsigned long、long、unsigned int、int

型別強制轉換

型別強制轉換的寫法為

(目標型別)要轉換的值或變數
例如:將3.14轉換為整數

printf

("%d",(

int)

3.14);

// 輸出3

//想一想把(int)去掉會輸出什麼

所以這就很好的解釋了為什麼printf("%d", ~4)的值是-5而不是251,因為「4」預設為int型別,將其取反後恰好是-5的補碼。那麼,如果想使~4的值為251應該怎麼做呢?

#include

void

main()

想一想,下面的三條語句分別輸出什麼?為什麼?

#include

void

main()

輸出結果分別為510、0.00、0.75

unsigned char的最大值是255,但在計算a * b時計算機將它們都轉換成了int,所以可以正常輸出a * b(即510)的值,且a * b是int型別

3和4都是整數型別(且預設為int),整數和整數進行運算,結果仍是整數,所以3/4的值為0,「.2f」表示保留兩位小數,所以輸出0.00。

"()"的優先順序是最大的,所以這個語句會將3轉為為float型別,而4是預設的int型別。在計算時,會將優先順序較低的int型「4」轉換為float型別,小數和小數的計算結果是小數,且值為0.75,「.2f」表示保留兩位小數,所以輸出0.75。

知識點:

輸出小數時預設保留6位小數

每週五晚20:00更新

F 入門 第二章 F 基礎 第八節 for迴圈

本節對f 中的for迴圈進行介紹。以下是f 中的基本的for迴圈的編寫方法。for迴圈 for語句1 for 迴圈變數 表示式1 to 表示式2 do 表示式3 done for語句2 for 迴圈變數 in 表示式4 do 表示式5 done for語句1是c語言風格的迴圈方式。for語句2是一般...

C 第八節 子類的三大件

子類的三大件 1.1 子類建構函式中,呼叫父類建構函式,對來自父類的那部分成員進行初始化,再初始化自己擴充套件的成員 1.2 誰的成員,歸誰初始化,子類無需重複完成父類部分的工作 1.3 父類建構函式放在初始化列表 1.4 如果在子類的建構函式中,不顯式的呼叫父類建構函式,將自動呼叫父類的預設建構函...

C語言從零到入門 第七節 C語言的輸入和輸出

本節主要講解 printf的作用是在螢幕上輸出文字 它有兩種用法 1.直接輸出字串 include void main 字串 就是被雙引號包裹起來的文字內容。字串和char型別的區別 2.輸出格式化字串 include void main 上面的 會輸出 你好,我叫小明 名詞解釋 例如上面的 s是字...