摘要:今天小玄為大家?guī)碚Z言的操作符相關的講解,希望大家能通過這篇文章對相關操作符有更加深入的理解。操作符的兩個操作數(shù)必須為整數(shù)。操作符的優(yōu)先級操作符的結合性是否控制求值順序。兩個相鄰的操作符先執(zhí)行哪個取決于他們的優(yōu)先級。
????????今天小玄為大家?guī)?u>C語言的操作符相關的講解,希望大家能通過這篇文章對相關操作符有更加深入的理解。那么:
??
目錄
* *sizeof * * (操作符)(不是函數(shù)!)
* * ~? (對一個數(shù)的二進制按位取反) * *
“區(qū)分邏輯與和按位與” “ 區(qū)分邏輯或和按位或?”
????????????????????????+ ????????????????? - ?????????????????* ?????????????????/ ?????????????????%
? ? ? ? ?相關細節(jié):
<< 左移操作符
>> 右移操作符
移位操作符,移動的是二進制位(適用于整數(shù)哦)
對于整數(shù)的二進制有3種表示形式 :原碼,反碼,補碼
原碼 —— 直接按照數(shù)字的正負寫出的二進制序列
反碼 —— 原碼的符號位不變,其他位按位取反得到的
補碼 —— 反碼+1
整數(shù)在內存中存儲的是二進制的補碼?
左移操作符 移位規(guī)則:左邊拋棄、右邊補0?
右移操作分兩種:
?
大部分的編譯器使用的是算術右移?
?警告? : 對于移位運算符,不要移動負數(shù)位,這個是標準未定義的。?int num = 10;
int num = 10;num >> 1;//錯誤的操作
按二進制位(即用該數(shù)的補碼進行計算)
?
規(guī)則 : 相同為 0;相異為1
1,求一個正整數(shù)原碼中有幾個1
int a = 15;int i = 0;int sum =0;for(i = 0;i < 32;i++){ sum += a & 1; a = a >> 1;}
2,一道{{BANNED}}的面試題:不能創(chuàng)建臨時變量(第三個變量),實現(xiàn)兩個數(shù)的交換。
(常規(guī)解法(有溢出風險)) + (創(chuàng)建臨時變量)
int main(){ int a = 3; int b = 5; a = a + b; //防止過大,有上限,會導致溢出 b = a - b; a = a - b; return 0;}
? ? ? ***??(異或的解法)? ***
int a = 3;int b = 5;//異或a = a ^ b;b = a ^ b;a = a ^ b;
a ^ a = 0
0 ^ a = a
a ^ b ^ a = b
a ^ a ^ b = b? (異或支持交換律)?
int weight = 120;//體重
weight = 89;
//不滿意就賦值double salary = 10000.0;salary = 20000.0;
//使用賦值操作符賦值。賦值操作符可以連續(xù)使用,比如:
int a = 10;
int x = 0;
int y = 20;
a = x = y+1;//連續(xù)賦值這樣的代碼感覺怎么樣?
那同樣的語義,你看看:
x = y+1;
a = x;
這樣的寫法是不是更加清晰爽朗而且易于調試。
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
!? ? ? ? ? ? ?邏輯反操作
-? ? ? ? ? ? ?負值
+ ? ? ? ? ???正值
&? ? ? ? ? ? 取地址
sizeof ? ? 操作數(shù)的類型長度(以字節(jié)為單位)
~? ? ? ? ? ? 對一個數(shù)的二進制按位取反
--? ? ? ? ? ? 前置、后置--
++? ? ? ? ? 前置、后置++
*? ? ? ? ? ? ?間接訪問操作符(解引用操作符)
(類型) ? ? 強制類型轉換
sizeof是計算變量或者類型創(chuàng)建變量的內存大小,和內存中存放什么數(shù)據(jù)沒有關系?
char arr[0] = "abc";printf("%d",sizeof(arr)); // 10printf("%d",strlen(arr)); // 3
如代碼所示,strlen()輸出的是字符串的長度,關注的是內存中是否有"/0",計算的是"/0"前出現(xiàn)的字符個數(shù)
?數(shù)組名放在sizeof的內部,數(shù)組名表示的整個數(shù)組的大小
?數(shù)組傳參時,數(shù)組名表示的是數(shù)組首元素的地址
>
>=
<
<=
!= ?用于測試“不相等”
== ? ? 用于測試“相等”
&&? ? ? 邏輯與
|| ? ? ? ? 邏輯或
1&2----->0
1&&2---->1
1|2----->3
1||2---->1
?“1 2 3 4”(思考一下哦)
exp1 ? exp2 : exp3
逗號表達式,就是用逗號隔開的多個表達式。 逗號表達式,從左向右依次執(zhí)行。整個表達式的結果是最后一個表達式的結果。
?exp1, exp2, exp3, …expN
復雜表達式的求值有三個影響的因素。
1. 操作符的優(yōu)先級2. 操作符的結合性3. 是否控制求值順序。
兩個相鄰的操作符先執(zhí)行哪個?取決于他們的優(yōu)先級。如果兩者的優(yōu)先級相同,取決于他們的結合性。操作符優(yōu)先級?
附表:
?
以上就是這篇文章的全部內容啦!
希望你能對操作符有一個更深入的了解。
如果覺得有幫助的話,請給小玄:?
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121285.html
摘要:多圖上傳修改里面的方法將封面修改為封面創(chuàng)建圖片修改器修改器使用說明,請閱讀相關說明文檔在里增加和兩個方法顯示效果原文地址地址 laravel中使用WangEditor及多圖上傳 1. 創(chuàng)建項目及安裝所需安裝包 1.1 創(chuàng)建項目 composer create-project laravel/laravel=5.3 blog_wangeditor --prefer-dist 1.2 創(chuàng)建...
摘要:多圖上傳修改里面的方法將封面修改為封面創(chuàng)建圖片修改器修改器使用說明,請閱讀相關說明文檔在里增加和兩個方法顯示效果原文地址地址 laravel中使用WangEditor及多圖上傳 1. 創(chuàng)建項目及安裝所需安裝包 1.1 創(chuàng)建項目 composer create-project laravel/laravel=5.3 blog_wangeditor --prefer-dist 1.2 創(chuàng)建...
閱讀 1696·2021-10-09 09:44
閱讀 3263·2021-09-27 13:36
閱讀 1520·2021-09-22 15:33
閱讀 1274·2021-09-22 15:23
閱讀 1159·2021-09-06 15:02
閱讀 1695·2019-08-29 16:14
閱讀 2900·2019-08-29 15:26
閱讀 2407·2019-08-28 18:08