操作符的分類:
1 算術操作符
2 移位操作符
3 位操作符
4 賦值操作符
5 單目操作符
6 關係操作符
7 邏輯操作符
8 條件操作符
9
逗號表示式
1 算術操作符:
+ - * / %
1) 除了%操作符之外,不能用於浮點數。
2)對於/操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法。
3) %操作符的兩個運算元必須為整數。返回的是整除之後的餘數。
2 移位操作符
<< 左移操作符:左邊拋棄、右邊補0
>> 右移操作符:
首先右移運算分兩種:
1)算術移位
左邊用符號位填充,右邊丟棄
2) 邏輯移位
左邊補0,右邊丟棄
3 位操作符:& | ^
注:他們的運算元必須是整數。
4 賦值操作符
該操作符 可以修改之前不
滿意的值,就是你可
以給自己重新賦值。
賦值操作符可以連續使用
+= -= *= /= %= >>= <<= &= |= ^=
這些運算子都可以寫成復合的效果,這樣寫更加簡潔。
5 單目運算子
! 邏輯反操作
- 負值
+ 正值
& 取位址
sizeof 運算元的型別長度(以位元組為單位)
~ 對乙個數的二進位制按位取反
-- 前置、後置--
++ 前置、後置++
* 間接訪問操作符(解引用操作符)
(型別) 強制型別轉換
前置++和--:先自增(自減),再使用
後置++和--:先使用,再自增(自減)
6 關係操作符:> >= < <= != 用於測試「不相等」 == 用於測試「相等」
警告:在程式設計的過程中== 和=不小心寫錯,導致的錯誤
7 邏輯操作符
&& 邏輯與 :左邊表示式為假,不再執
行後邊的表示式
|| 邏輯或 :左邊表示式為真,不再執行後邊的表示式
區分邏輯與&&
和按位與&
區分邏輯或||和按
位或|
1&2----->0
1&&2---->1
1|2----->3
1&&2---->1
8 條件操作符
exp1 ? exp2 : exp3
可以使用條件表示式實現找兩個數中較大值,比if else語句簡潔明瞭
9 逗號表示式
exp1, exp2, exp3, …expn
逗號表示式,就是用逗號隔開的多個表示式。
逗號表示式,從左向右依次執行。整個表示式的結果是最後乙個表示式的結果。
算術轉換
如果某個操作符的各個運算元屬於不同的型別,那麼除非其中乙個運算元的轉換為另乙個運算元的型別,否則操作就無法進行。下面的層次體系稱為尋常算術轉換。
long double
double
float
unsigned long int
long int
unsigned int
int如果某個運算元的型別在上面這個列表中排名較低,那麼首先要轉換為另外乙個運算元的型別後執行運算。
警告:但是算術轉換要合理,要不然會有一些潛在的問題。
操作符的屬性
複雜表示式的求值有三個影響的因素。
1. 操作符的優先順序
2. 操作符的結合性
3. 是否控制求值順序。
兩個相鄰的操作符先執行哪個?取決於他們的優先順序。如果兩者的優先順序相同,取決於他們的結合性。
表示式的求值部分由操作符的優先順序決定。
eg1:
a*b + c*d + e*f
注釋:**1在計算的時候,由於比+的優先順序高,只能保證,的計算是比+早,但是優先順序並不能決定第三個*比第乙個+早執行。
所以表示式的計算機順序就可能是:a*b c*d a*b + c*d e*f a*b + c*d + e*f
或者:a*b c*d e*f a*b + c*d a*b + c*d + e*f
eg2: c + --c;
注釋:同上,操作符的優先順序只能決定自減–的運算在+的運算的前面,但是我們並沒有辦法得知,+操作符的左運算元的獲取在右運算元之前還是之後求值,所以結果是不可**的,是有歧義的。
c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
C語言 , 操作符
例如 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為cout hello world endl 例如 define concatenate x,y x y int xy 10 將會使編譯器把 cout conc...
C語言 操作符
c語言的操作符有很多種,也很重要,可分為以下幾類 1.算術操作符 除法中 倆個整形相除結果也等於整形 含有浮點型的除法中結果也為浮點型。模運算只能用於整數,因為有小數點時,為浮點數運算,浮點數除法中不存在小數。int main 2.移位操作符 左移 左邊直接拋棄,右邊補0 001 2 100 右移 ...