今天來總結一下常見的操作標識符。
一、算術操作符。
首先了解一下算術標識符都有哪些:+、-、*、/、%。
這些運算符都是最基礎的操作符,不做過多介紹。但要注意“%”只能用於整型。
二、移位操作符。
移位操作符有兩種:>>(右移操作符)、<<(左移操作符)。
特別注意右移操作時分為兩種情況:
1、算術右移;
2、邏輯移位。
算術右移情況指的是:二進制數有正負之分,補位時要注意符號位;
邏輯移位情況指的是:不需要考慮符號產生的問題,直接補0即可。
下面給出一段代碼舉例:
#include<stdio.h>
int main() { int a = 10; printf("%d\n", a >> 1); system("pause"); return 0; }
它的結果輸出是5。 這里需要特別注意,
1、移位操作符不能直接賦值改變變量。
如果需要改變變量需要這樣輸入:a>>=1;
2、左移操作相當於/2;
右移操作相當於*2。
三、位操作符。
位操作符包括:&(按位與)、|(按位或)、^(按位異或)。
這三個操作符也非常簡單,在前面的交換兩數內容時有提到過用法。
需要注意的是,這三個操作符操作的必須是整數。
四、賦值操作符。
賦值操作符在之前的程序代碼中經常出現,其操作符有:=、+=等。
注意在連續賦值時,應從右往左賦值,例如:
a=x=y+1;
輸出時a的值就應是y+1。
五、單目操作符。
單目操作符有:!(邏輯反操作、非)、&(取地址符)、sizeof(求長度)、~(按位取反)、++、--、*、(類型)等。
需要注意的是:
1、&是取地址符,%p打印地址。
2、sizeof()是操作符,不是函數!
3、++的前置和后置。舉例說明:
#include<stdio.h> int main()//++后置 { int a = 10, b = 0; b = a++; printf("a=%d,b=%d\n", a, b); system("pause"); return 0; }
得到的結果:a=11,b=10。
#include<stdio.h> int main()//++前置 { int a = 10, b = 0; b = ++a; printf("a=%d,b=%d\n", a, b); system("pause"); return 0; }
得到的結果:a=11,b=11。
4、*在這里是間接訪問操作符,主要和指針相關。
5、(類型)為強制類型轉換操作符,例如強制將浮點型數轉化成整型數時:
#include<stdio.h> int main() { int num = 0; float f = 3.14; num = (int)f; printf("num=%d\n", num); system("pause"); return 0; }
這里輸出的結果:num=3。
六、關系操作符。
關系操作符主要是:==、>=、<=。
主要出現在條件的比較判斷上,如:if語句、for循環等。
七、條件操作符。
1、exp1 ? exp2 : exp3 ;
舉例解釋一下上述語句:
int main() { int a=10, b=0; if (a > 5) b = 3; else b = -3; printf("b=%d\n", b); system("pause"); return 0; }
當a=10時,通過if的條件判斷后,b的值為3。
當a=-10時,b的值為-3。
如果用上述語句即可表達成:
#include<stdio.h> int main() { int a=10, b=0; b = a > 5 ? 3 : -3; printf("b=%d\n", b); system("pause"); return 0; }
兩種方式得到的結果是一樣的。
2、exp1 , exp2 , exp3
舉例解釋:
#include<stdio.h> int main() { int a=1, b=2; int c = (a > b, a = b + 10, a, b = a + 1); printf("c=%d\n", c); system("pause"); return 0; }
逗號條件句的運算規則是從左往右依次運算,其結果是最后一個表達式的結果。
結果輸出是c=13。
八、其他操作符。
1、下標引用操作符 [ ] :多見於數組。例如:arr[2]。
特別注意:arr[2]與*(arr+2)是等價的。
2、函數調用操作符 ( ) :這個操作符十分常見,不做過多解釋。
3、結構成員訪問操作符 . 和 -> :多見於結構體中。在后續的數據結構的復習中我們在詳細介紹。