目錄
xwg今天就帶各位大佬來了解一波c語言的操作符。
常見的操作符分別如下:
算術操作符是我們最常用的操作符:+ - * / %
注:
移位操作符分為左移操作符和右移操作符,移位操作符的操作物件只能是整數,且所謂的移位是對於整數的二進位制位進行移位:
左移操作符:www.cppcns.com<<
右移操作符:>>
左移操作符:
移位規則:左邊拋棄,右邊補0右移操作符:
移位規則:
2.1 邏輯移位
左邊用0填充,右邊cvnhwkk丟棄
2.2算術移位
左邊用原該值的符號位填充,右邊丟棄
注:大cvnhwkk部分編譯器右移都是執行算術右移。
注:對於移位運算子,不要移動負數字,這個是標準未定義的。
位操作符有:
& —— 按位與
| —— 按位或
^ —— 按位異或
位操作符的運算元必須是整數,且是對其二進位制的補碼進行操作。
異或的基本性質:
例:不建立臨時變數使兩個數進行交換
#include
int main()
邏輯操作符分為:
&& —— 邏輯與
|| —— 邏輯或
邏輯與:
必須使 && 左右兩個表示式都為真
邏輯或:
|| 兩邊有乙個式子為真即為真
逗號表示式是用逗號隔開的多個表示式:
exp1, exp2, exp3, …expn
逗號表示式,從左向右依次執行,整個表示式的結果是最後乙個表示式的結果。
表示式求值的順序一部分是由操作符的優先順序和結合性決定,但是,有些表示式的運算元在求值的過程中可能需要轉換為其他型別。
c語言的整型算術運算總是至少以預設整型型別的精度來進行的,為了獲得這個精度,表示式中的字元和短整型運算元在使用之前被轉換為普通整型,這種轉換稱為整型提公升。
例項:char a,b,c;
...a = b + c;
b和c的值被提公升為普通整型,然後再執行加法運算,加法運算完成之後,結果將被截斷,然後再儲存於a中。
整形提公升是按照變數的資料型別的符號位來提公升的,若操作物件為正數則補0,操作物件為負數則補1。
負數的整形提公升
char c1 = -1;
變數c1的二進位制位(補碼)中只有8個位元位:
1111111
因為 char 為有符號的 char
所以整形提公升的時候,高位補充符號位,即為1
提公升之後的結果是:
11111111111111111111111111111111
正數的整形提公升
char c2 = 1;
變數c2的二進位制位(補碼)中只有8個位元位:
00000001
因為 char 為有符號的 char
所以整形提公升的時候,高位補充符號位,即為0
提公升之後的結果是:
00000000000000000000000000000001
無符號整形提公升,高位補0
int main()
如果某個操作符的各個運算元屬於不同的型別,那麼除非其中乙個運算元的轉換為另乙個運算元的型別,否則操作就無法進行。
下面的層次體系稱為尋常算術轉換:
long double
double
float
unsigned long int
long int
unsigned int
int如果某個運算元的型別在上面這個列表中排名較低,那麼首先要轉換為另外乙個運算元的型別後執行運算。
複雜表示式的求值有三個影響的因素。
兩個相鄰的操作符先執行哪個?取決於他們的優先順序。如果兩者的優先順序相同,取決於他們的結合性。
操作符分類
reactivex的每種程式語言的實現都實現了一組操作符的集合。不同的實現之間有很多重疊的部分,也有一些操作符只存在特定的實現中。每種實現都傾向於用那種程式語言中他們熟悉的上下文中相似的方法給這些操作符命名。用於建立observable的操作符 這些操作符可用於對observable發射的資料進行變...
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...