C語言入門之資料型別 5

2022-12-13 13:12:06 字數 2580 閱讀 8596

基本運算子和表示式

運算子的種類、優先順序和結合性

c語言中運算子和表示式數量之多, 在高階語言中是少見的。正是豐富的運算子和表示式使c語言功能十分完善。 這也是c語言的主要特點之一。

c語言的運算子不僅具有不同的優先順序, 而且還有乙個特點,就是它的結合性。在表示式中, 各運算量參與運算的先後順序不僅要遵守運算子優先順序別的規定,還要受運算子結合性的制約, 以便確定是自左向右進行運算還是自右向左進行運算。 這種結合性是其它高階語言的運算子所沒有的,因此也增加了c語言的複雜性。

運算子的種類c語言的運算子可分為以下幾類:

1.算術運算子

用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)共七種。

2.關係運算子

用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。

3.邏輯運算子

用於邏輯運算。包括與(&&)、或(||)、非(!)三種。

4.位操作運算子

參與運算的量,按二進位制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

5.賦值運算子

用於賦值運算,分為簡單賦值(=)、復合算術賦值和復合位運算賦值》=,<<=)三類共十一種。

6.條件運算子

這是乙個三目運算子,用於條件求值(?:)。

7.逗號運算子

用於把若干表示式組合成乙個表示式(,)。

8.指標運算子

用於取內容(*)和取位址(&)二種運算。

9.求位元組數運算子

用於計算資料型別所佔的位元組數(sizeof)。

10.特殊運算子

有括號(),下標,成員(→,.)等幾種。

優先順序和結合性

c語言中,運算子的運算優先順序共分為15級。1級最高,15級最低。在表示式中,優先順序較高的先於優先順序較低的進行運算。

而在乙個運算量兩側的運算子優先順序相同時, 則按運算子的結合性所規定的結合方向處理。c語言中各運算子的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算子的結合性是自左至右,即先左後右。

如有表示式x-y+z則y應先與「-」號結合, 執行x-y運算,然後再執行+z的運算。這種自左至右的結合方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。

最典型的右結合性運算子是賦值運算子。如x=y=z,由於「=」的右結合性,應先執行y=z再執行x=(y=z)運算。 c語言運算子中有不少為右結合性,應注意區別,以避免理解錯誤。

算術運算子和算術表示式基本的算術運算子

1.加法運算子「+」加法運算子為雙目運算子,即應有兩個量參與加法運算。如a+b,4+8等。具有右結合性。

2.減法運算子「-」減法運算子為雙目運算子。但「-」也可作負值運算子,此時為單目運算,如-x,-5等具有左結合性。

3.乘法運算子「*」雙目運算,具有左結合性。

4.除法運算子「/」雙目運算具有左結合性。參與運算量均為整型時, 結果也為整型,捨去小數。如果運算量中有乙個是實型,則結果為雙精度實型。

雙目運算具有左結合性。參與運算量均為整型時, 結果也為整型,捨去小數。如果運算量中有乙個是實型,則結果為雙精度實型。

printf("\n\n%d,%d\n",20/7,-20/7);

printf("%f,%f\n",20.0/7,-20.0/7);

本例中,20/7,-20/7的結果均為整型,小數全部捨去。而20.0/7和-20.0/7由於有實數參與運算,因此結果也為實型。

5.求餘運算子(模運算子)「%」雙目運算,具有左結合性。要求參與運算的量均為整型。 求餘運算的結果等於兩數相除後的餘數。

雙目運算,具有左結合性。求餘運算子% 要求參與運算的量均為整型。本例輸出100除以3所得的餘數1。

自增1,自減1運算子

自增1運算子記為「++」,其功能是使變數的值自增1。自減1運算子記為「--」,其功能是使變數值自減1。自增1,自減1運算子均為單目運算,都具有右結合性。

可有以下幾種形式: ++i i自增1後再參與其它運算。--i i自減1後再參與其它運算。

i++  i參與運算後,i的值再自增1。

i--  i參與運算後,i的值再自減1。

在理解和使用上容易出錯的是i++和i--。 特別是當它們出在較複雜的表示式或語句中時,常常難於弄清,因此應仔細分析。

i的初值為8

第2行i加1後輸出故為9;

第3行減1後輸出故為8;

第4行輸出i為8之後再加1(為9);

第5行輸出i為9之後再減1(為8) ;

第6行輸出-8之後再加1(為9);

第7行輸出-9之後再減1(為8)

這個程式中,對p=(i++)+(i++)+(i++)應理解為三個i相加,故p值為15。然後i再自增1三次相當於加3故i的最後值為8。而對於q 的值則不然,q=(++j)+(++j)+(++j)應理解為q先自增1,再參與運算,由於q自增1三次後值為8,三個8相加的和為24,j的最後值仍為8。

算術表示式表示式是由常量、變數、函式和運算子組合起來的式子。 乙個表示式有乙個值及其型別, 它們等於計算表示式所得結果的值和型別。表示式求值按運算子的優先順序和結合性規定的順序進行。

單個的常量、變數、函式可以看作是表示式的特例。

C語言資料型別總結 1

c99標準 一 資料型別 資料型別是按照規定形式表示資料的一種方式,不同的資料型別占用空間也不同。為了學習方便,特意整理了下c語言的資料型別的分類結構,如下圖 對於資料型別,還應該明白以下幾點 1 整型資料 int可以有修飾符 short long long long三種,後面的int可省略,預設的...

C語言基本資料型別整型int用法詳解

c語言基本資料型別 整型 int 用法詳解 1.整型int c 語言提供了很多整數型別 整型 這些整型的區別在於它們的取值範圍的大小,以及是否可以為負。int是整型之一,一般被稱為整型。以後,在不產生歧義的情況下,我們把整數型別和int都稱為整型。int代表有符號整數,也就是說,用int宣告的變數可...

C程式資料型別 理論講義

c程式設計講義 資料型別 教學目的 學習並掌握c程式設計的幾種基本資料型別及其常量,變數的表示法 教學重點 幾種基本資料型別所能表示的資料範圍以及如何使用 教學難點 資料在儲存單元中的存放形式比較難理解。授課形式 理論教學條件 多 教學內容 複習 c語言程式的基本結構 新課 1.常量與變數 常量 在...