概述
c語言一共有34種運算子,10種運算型別:算術運算子(+、-、*、/、%)、關係運算子(>、>=、==、!=、<、<=)、位運算子(>>、<<、==、!=、<、<=)、邏輯運算子(!、||、&&)、條件運算子、(?:)指標運算子(&、*)、賦值運算子(=)、逗號運算子(,)、求位元組運算子(sizeof)、強制型別轉換運算子((型別名))、其他(下標、分量、函式);
若按參與運算的物件個數,c語言運算子可分為單目運算子(如!)、雙目運算子(如+、-)和三目運算子(如?:)
1. 運算子的結合性
在c語言的運算子中,所有的單目運算子、條件運算子、賦值運算子及其擴充套件運算子,結合方向都是從右向左,其餘運算子的結合方向是從左向右。
2.運算子的優先順序
初等運算子(圓括號()、下標運算子、結構體成員運算子->) > 單目運算子 > 算術運算子(先乘除後加減)> 關係運算子 > 邏輯運算子(不包括!)條件運算子 > 賦值運算子 > 逗號運算子
強制型別轉換運算子和賦值運算中的型別轉換
1.強制型別轉換運算子
(1).作用:可以利用強制型別轉化運算子將乙個表示式轉換成所需型別。
(2).一般形式:(型別名)(表示式);例如:(char)(x+y);(將(x+y)的值強制轉換成字元型)
2. 賦值運算中的型別轉換
(1).如果賦值運算子兩側的型別不一致,在賦值前系統將自動先不右側表示式的數值按賦值號左邊變數的型別進行轉換(也可以用強制型別轉換的方式),但這種轉換僅限於某些「賦值相容」的資料之間。對於另一些「賦值不相容」的資料,如:位址值,就不能賦值給一般變數。
(2).常用的轉換規則:
1>.當實型資料賦值給整型變數時,將實型資料的小數部分截斷,只取整數部分
例:int x;執行「x=5.21;」後,x的值為5
2>.當整型資料賦值給實型變數時,數值不變,但以浮點形式儲存到實型變數中
例:float x=45;輸出x的結果為45.00000
3>.當double型別資料賦值給floa型變數是,取前面7位有效數字,存放到float型變數的儲存單元中,這是數值可能溢位
4>.當字元型資料賦值給整型變數時,由於整型變數佔4個位元組,而字元只佔乙個位元組,需將字元資料(8位)放到整型變數低8位中,對給該整型變數最高位進行符號擴充套件,其他位補零。
5>.當整型、短整型、長整型資料賦值給乙個char型別變數時,將其低8位原封不動地送到char型別變數中(即截斷)。
運算子優先順序順序
優先順序
運算子
名稱或含義
使用形式
結合方向
說明1
陣列下標
陣列名[常量表示式]
左到右()
圓括號(表示式)/函式名(形參表)
.成員選擇(物件)
物件.成員名
->
成員選擇(指標)
物件指標->成員名
++後置自增運算子
++變數名
單目運算子
--後置自減運算子
--變數名
單目運算子2-
負號運算子
-表示式
右到左單目運算子
(型別)
強制型別轉換
(資料型別)表示式
++前置自增運算子
變數名++
單目運算子
--前置自減運算子
變數名--
單目運算子
*取值運算子
*指標變數
單目運算子
&取位址運算子
&變數名
單目運算子
!邏輯非運算子
!表示式
單目運算子
~按位取反運算子
~表示式
單目運算子
sizeof
長度運算子
sizeof(表示式)3/
除表示式/表示式
左到右雙目運算子*乘
表示式*表示式
雙目運算子
%餘數(取模)
整型表示式/整型表示式
雙目運算子4+
加表示式+表示式
左到右雙目運算子-減
表示式-表示式
雙目運算子
5<<
左移變數《表示式
左到右雙目運算子
>>
右移變數》表示式
雙目運算子
6>
大於表示式》表示式
左到右雙目運算子
>=
大於等於
表示式》=表示式
雙目運算子
<
小於表示式《表示式
雙目運算子
<=
小於等於
表示式<=表示式
雙目運算子7==
等於表示式==表示式
左到右雙目運算子
!=不等於
表示式!= 表示式
雙目運算子8&
按位與表示式&表示式
左到右雙目運算子9^
按位異或
表示式^表示式
左到右雙目運算子10|
按位或表示式|表示式
左到右雙目運算子
11&&
邏輯與表示式&&表示式
左到右雙目運算子
12||
邏輯或表示式||表示式
左到右雙目運算子
13?:
條件運算子
表示式1? 表示式2: 表示式3
右到左三目運算子14=
賦值運算子
變數=表示式
右到左/=
除后賦值
變數/=表示式
*=乘後賦值
變數*=表示式
%=取模後賦值
變數%=表示式
+=加後賦值
變數+=表示式
-=減後賦值
變數-=表示式
<<=
左移後賦值
變數<<=表示式
>>=
右移後賦值
變數》=表示式
&=按位與後賦值
變數&=表示式
^=按位異或後賦值
變數^=表示式
|=按位或後賦值
變數|=表示式15,
逗號運算子
表示式,表示式,…
左到右從左向右順序運算
c語言運算子和表示式
第六次課 運算子與表示式 一 運算子和表示式 運算子 表示式 由運算元和運算子組成的式子,如 a b,1 2 c語言中單一的乙個變數或者單一的乙個常量是最簡單的表示式 提問 以下程式是輸出變數的值還是表示式的值?int main void 總結 永遠輸出表示式的值!1.優先順序與結合性 優先順序 參...
C 運算子和表示式
歡迎購買我的專欄 1.高階c 學習 2.網路 c 提供了許多運算子。其中許多都受到內建型別的支援,可用於對這些型別的值執行基本操作。c 中有算術運算子 比較運算子 布林邏輯運算子 位運算子和移位運算子 相等運算子 在下面的 中,表示式的示例位於賦值的右側 int a,b,c a 7 b a c b ...
C語言中運算子和表示式
十分完善。這也是c語言的主要特點之一。c語言的運算子不僅具有 不同的優先順序,而且還有乙個 特點,就是它的結合性。在表示式中,各運算量參與 運算的先後順序不僅要遵守運算子優先順序別的規定,還要受運算子結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。這種結合性是其它高階語言的運算子所沒有...