C語言運算子

2021-09-25 17:50:53 字數 3412 閱讀 3978

運算子是一種告訴編譯器執行特定的數學或邏輯操作的符號。c 語言內建了豐富的運算子,並提供了以下型別的運算子:

1)算術運算子

2)賦值運算子

3)關係運算子

4)邏輯運算子

5)位運算子

本章將只介紹算術運算子和賦值運算子,關係運算子和邏輯運算子放在其它章節中介紹,位運算子了解即可,不深入學習。

下表顯示了 c 語言支援的所有算術運算子。假設變數 a 的值為 18,變數 b 的值為 5,則:

運算子

描述

例項

+

兩個數相加

a+b

將得到 23

-

乙個數減另乙個數

a-b

將得到 13

*

兩個數相乘

a*b

將得到 90

/

分子除以分母

a/b

將得到 3.6

%

餘數運算子,整除後的餘數

b%a

將得到 3

++

自增運算子,整數值增加 1

a++

將得到 19

--

自減運算子,整數值減少 1

a--

將得到 17

示例(book15.c)

執行結果

變數的自增或自減有兩種寫法:

變數名++;    // 表示在本次使用變數後再自增;

++變數名;     // 表示在本次使用變數前自增;

變數名--;    // 表示在本次使用變數後再自增;

--變數名;     // 表示在本次使用變數前自減;

示例(book16.c)

執行結果

下表列出了 c 語言支援的賦值運算子:

運算子

描述

例項

=

簡單的賦值運算子,把右邊運算元的值賦給左邊運算元

c = a + b

將把 a + b 的值賦給 c

+=

加且賦值運算子,把右邊運算元加上左邊運算元的結果賦值給左邊運算元

c += a

相當於 c = c + a

-=

減且賦值運算子,把左邊運算元減去右邊運算元的結果賦值給左邊運算元

c -= a

相當於 c = c - a

*=

乘且賦值運算子,把右邊運算元乘以左邊運算元的結果賦值給左邊運算元

c *= a

相當於 c = c * a

/=

除且賦值運算子,把左邊運算元除以右邊運算元的結果賦值給左邊運算元

c /= a

相當於 c = c / a

%=

求餘數且賦值運算子,求兩個運算元的模賦值給左邊運算元,浮點數不適用取餘數。

c %= a

相當於 c = c % a

賦值運算子還包括了位運算,位運算不好理解,並且極少使用,所以不講了。

賦值運算子支援的是c語言的基本資料型別,包括char int double,字串(字元陣列)不能這麼賦值。

示例(book17.c)

執行結果

sizeof是c語言的關鍵字,發揮著運算子的作用。它主要用來計算某乙個變數在當前系統的記憶體中所需占用的位元組數。變數的型別包括char、int、double、陣列、結構體和其它自定義的資料型別。

sizeof不是函式。產生這樣的疑問主要是因為sizeof的書寫確實有點像函式,比如:i = sizeof(int);這樣的寫法,就很容易讓人誤以為sizeof是乙個函式。sizeof有兩種寫法:

1、用於資料型別 

sizeof使用形式:sizeof(type)

資料型別必須用括號括住。如sizeof(int)。 

printf("sizeof(int)=%d\n",sizeof(int));   // 輸出結果:sizeof(int)=4 2

、用於變數 

sizeof使用形式:sizeof(var_name)或sizeof var_name 

變數名可以不用括號括住。如sizeof(var_name),sizeof var_name等都是正確形式。帶括號的用法更普遍,大多數程式設計師採用這種形式。 

sizeof是很常用的運算子,如果你現在理解不了沒有關係,以後我們會經常使用它,並且很簡單。

printf("sizeof dd =%d\n",sizeof dd);     // 輸出結果:sizeof dd =8

printf("sizeof(dd)=%d\n",sizeof(dd));     // 輸出結果:sizeof(dd)=8

在+-*/四則運算符中,*/的優先順序高於+-,在c語言中,其它的運算子都有優先順序,我不想介紹它們的優先順序,因為我寫了二十年的程式,也記不住各種運算子的優先順序的關係,我也沒打算記住。

我不建議程式設計師記住各種運算子的優先順序,而是用括號可以解決全部的問題,括號的優先順序是最高的,括號中的表示式會優先執行,這樣各個運算子的執行順序就一目了然了。

int d = a + (b * c);

如果這篇文章對您有幫助,請點贊支援,或在您的部落格中**我的文章,謝謝!!!

C語言 運算子與 運算子

我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...

C語言 運算子和 運算子

變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...

C語言運算子

1級優先順序左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 字尾增量運算子 字尾增量運算子 2級優先順序右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首增量運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 sizeof 長度運算子 3級優先順序左結合 ...