算數運算子
算數運算子包括:加(+),減(-),乘(*),除(/),取餘(%),自增(++),自減(--),下面上**,直接看例子。
#include int main(void)
執行結果:
a + b = 12
a - b = 8
a * b = 20
a / b = 5
a % b = 0
a++ = 11, ++a = 12
b-- = 1, --b = 0
c = 12
d = 13
需要說明的有以下幾點:
%運算子只可以用於兩個整型;
a++和++a在列印時沒有差別,但是將其賦值給變數時,存在差別,如上例中的c和d,a++是先將a賦值給變數,之後才會做自增;++a則是自增後將值賦值給變數。--運算子與++運算子類似。
關係運算子
關係運算子用來比較兩個數的大小,包括:等於(==),不等於(!=),大於(>),大於等於(>=),小於(
#include int main(void)
執行結果:
a == b: 0
a != b: 1
a < b: 1
a <= b: 1
a > b: 0
a >= b: 0
可以看到,c語言中使用0和1分別代表false和true。
邏輯運算子
邏輯運算子包括:邏輯與(&&),邏輯或(||),邏輯非(!)。
#include int main(void)
執行結果:
a > b && c > b: 0
a > b || c > b: 1
!(a > b): 1
需要說明的是,邏輯運算子存在短路的機制,比如上面的第一句printf,由於a>b為false,此時邏輯與已經不可能為true,所以後面的c>b將不會執行,也就是說邏輯與會被第乙個為false的條件表示式所阻斷;同理,對於邏輯或,如果前面的條件表示式已經為true,則無論後面的條件表示式為true或者false都對結果無關緊要了,邏輯或將會執行到第乙個為true的條件表示式。
位運算子
位運算子操作整型的位,包括:按位與(&),按位或(|),異或(^),按位取反(~),左移(<>)。
#include int main(void)
執行結果:
a = 0x00000001
b = 0x00000004
a & b: 0x00000000
a | b: 0x00000005
a ^ b: 0x00000005
~a: 0xfffffffe
a << 2: 0x00000004
a >> 1: 0x00000000
a | (1 << 2): 0x00000005
b & ~(1 << 2): 0x00000000
需要說明以下幾點:
左移運算,最高位會移出,低位補0;
右移運算,低位移出,最高位為1,則為1,為0,則為0,即保留符號位;
最後兩條printf語句,用來演示如何給乙個數的第2位置位為1和如何清除乙個數第2位的1。
賦值運算子
主要包括=, +=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=,除了=運算子,其他的都是結合了其他運算子的功能,比如a += 1,就是將a和1相加,再把結果賦值給a,這裡不再贅述。
型別轉換
c語言是強型別語言,不同型別的資料之間進行運算會進行型別的轉換,轉換方式主要有兩種,強制型別轉換和隱式型別轉換。
強制型別轉換是在編碼時通過顯式編寫**,實現的型別轉換;隱式型別轉換則是c語言編譯器自動為我們進行的型別轉換,總的原則是
如果表示式中的資料屬於同乙個大型別,比如都是整型,則資料統一向表示式中寬度最大的轉換,如int向long轉換,有符號型別還會向無符號型別轉換,如int向unsigned int轉換;
整型和浮點型運算,整型會轉換為浮點型。
強制將浮點型轉換為整型,浮點型小數部分丟失。
看乙個簡單的例子
#include int main(void)
執行結果:
c 型別轉換運算子
c 中有4個型別轉換運算子,使裝換過程更規範 dynamic cast type name expression 如果轉型失敗則返回0,即空指標。該運算子的用途是,使得能夠在類層次結構中進行向上轉換 由於 is a關係,這樣的型別轉換時安全的 而不允許其他轉換。二 const cast const ...
C 型別轉換運算子
隱式轉換,是針對不同型別之間的賦值和運算,函式呼叫傳遞引數 這些的轉換都是由編譯器自動完成 char ch int i ch 顯式轉換 由程式設計師在變數前面新增型轉換 char pc char pb void ps void pa 通過上述的兩種方式,c語言大部分的型別轉換都可以順利進行,c 繼承...
C 型別轉換運算子
用於 指向派生類物件的 基類指標轉換成派生類指標。如果轉換失敗,則返回0,即空指標。通過判斷轉換是否成功,來決定是否用派生類裡的函式 基類中可能沒有那個函式 class a class b public a class c public b a a new a a b new b a c new c...