一、sizeof運算子
計算乙個資料型別的大小
ex: int a = 1;
sizeof(a)//結果就是4(不同的作業系統不一樣)
計算乙個陣列的個數
int arr = ;
int num = sizeof(arr)/sizeof(arr[0]); //結果是5
計算自定義資料型別的陣列大小,也是一樣的
ex: typedef struct
m_stu;
m_stu list = ,,};
printf("list size = %d\n",sizeof(list)/sizeof(list[0]));//結果是3
注意:sizeof裡面的運算都是不影響原值的
ex: int a = 1;
printf("sizeof(a++) = %d\n",sizeof(a++));
printf("a = %d\n",a);//結果還是1
二、&&和||
只要兩個表示式裡有乙個的結果是真用或(||)合併以後結果就是真
只要兩個表示式裡有乙個的結果是假用與(&&)合併以後結果就是假
與(&&)和或(||)都具有短路特徵如果前面表示式的結果可以決定合併後,表示式的結果就忽略後面的表示式
ex:int main()
結果是0 因為1為真 所謂後面的++a就不進行計算
三、&、|、^
1、可以利用按位與從乙個數字裡單獨獲得某些數字的內容
0010 1011 & 0000 0001 結果是1
2、可以利用按位與把乙個數字的某些數字內容設定成0
0110 1011 & 1101 1111 結果是0100 1011
3、利用按位與用來判斷乙個數字是奇偶數
if(num & 0x1)
printf("jishu\n");
else
printf("oushu\n");
按位或(|)可以把對應數字的內容做或計算,只要乙個數字的內容是1則或計算以後結果就是1
3 0000 0011
| 5 0000 0101
0000 0111
任何數字內容和0做按位或保持不變
任何數字內容和1做按位或結果是1
可以利用按位或把某些數字內容設定成1
0110 1011 | 0000 0100 結果是0110 1111
任何數字內容和0做按位異或結果保持不變
任何數字內容和1做按位異或結果變成相反數
(多個數進行按位異或的時候奇數個1結果為1,偶數個1為0)
ex: 1 ^ 0 ^ 1 ^ 0 ^ 0 ^ 1 這裡有三個1所以左後異或的結果是1
/*****************************************/
可以利用按位異或把某些數字內容變成相反數
0110 1001 ^ 0000 1111 結果是 0110 0110
四、三目運算子
1. 條件運算子的運算優先順序低於關係運算子和算術運算子,但高於賦值符。因此 max=(a>b)?a:b可以去掉括號而寫為 max=a>b?a:b
2. 條件運算子?和:是一對運算子,不能分開單獨使用。
3. 條件運算子的結合方向是自右至左。
例如:a>b?a:c>d?c:d應理解為
a>b?a:(c>d?c:d) 這也就是條件表示式巢狀的情形,即其中的表示式3又是乙個條
件表示式。
C 基礎 運算子
運算子用於執行程式 運算,會針對乙個以上運算元進行運算。是程式中的乙個重要組成部分,目前為止,任何一門語言都會有其運算子。我們在學習c 之前,已經接觸過vb了。vb中的運算子,大家現在是不是忘得差不多了呢?接下來這篇部落格將比較一下vb和c 中運算子的異同點。一 算數運算子 從圖中,我們不難看出vb...
C 基礎 運算子
常用的運算符合 空連線運算子算術運算子 一元運算子 int i 10 int j i int k j 結果 i 9 j 10 k 9 二元運算子 10 3 3 10 3 1 10 4 2 10 5 0 邏輯運算子 返回型別永遠是布林型別 一元運算子 取非 bool b true bool r b 結...
C 03 運算子過載
運算子過載的目的 讓物件的運算表現的和內建型別的運算一樣。運算子過載函式,返回值一般不會是void,例如 連續的 就無法用void實現,一般用類型別的引用,可以保證連續運算。class ccomplex 複數類 ccomplex ccomplex const ccomplex src mreal s...