操作符和交換a b

2021-08-01 20:17:40 字數 2427 閱讀 1268

作為乙個程式設計師,或者說是開發工程師。技能總不是單一的,比如資料庫、計算機網路、作業系統、資料結構和一定的程式設計演算法這些我們都應該有所了解,這是作為乙個開發工程師的基礎,個人愚見:涉足的知識面越多,解決問題的辦法也多。

今天主要是總結一下程式設計師開發過程中的一些常見的基礎問題。

##1.自增自減

自增自減也就是我們經常遇到的 ++i、i++;i–、--i等。

符號在前在後的主要區別就是:符號在前,先運算再使用;符號在後,先使用再運算。

看以下例子:

int i=3,j=4;

i?i++:++j;

printf("%d %d\n",i,j);

請問輸出的i、j分別是多少?

第二行設計了三目運算符號,即滿足條件i,就執行i++,否則就執行++j;

以上輸出是i=4,j=4;

##2.位操作符

對於有符號的整數,32位中的前31位用於表示整數的值,第32位用於表示數值的符號,0表示正數,1表示負數。位操作都是轉成二進位制進行運算。

###按位與 and &

按位與的符號是「&」,操作法則是:兩位都是1才返回1,任一乙個是0返回0.

result = 25 & 3 ;

25:		 1 1 0 0 1

3: 0 0 0 1 1 兩位都為1才返回1

reslut: 0 0 0 0 1

所以以上result=1;

###按位或 or |

按位或的符號是「|」,操作法則是:有1位為1就返回1,只有兩個都為0時才返回0;

例:result = 25 | 3 ;

25:		 1 1 0 0 1

3: 0 0 0 1 1 兩位都為0時才返回0

reslut: 1 1 0 1 1

所以,以上執行後的結果轉化成10進製,result = 27;

###按位異或 xor ^

按位或的符號是「^」,操作法則是:只有1位為1才返回1,兩個都為0或兩個都為0時返回0;

例:result = 25 | 3 ;

25:		 1 1 0 0 1

3: 0 0 0 1 1 只有1位為1才返回1

reslut: 1 1 0 1 0

所以以上結果是 result = 26;

###按位非 not 「~」

按位非的符號是「~」號,返回數值的反碼。這個我是這樣記得,運算元的負值減一;

例:

num = 4;

~num = -5; // -(4)-1;

num = -4;

~num = 3; // -(-4)-1;

曾經在程式設計師面試寶典中看到一些關於這些基礎的問題,一起來複習下吧!

int x = 2,y,z;

x*= (y=z=5); ①: printf("%d\n",x);

z=3;

x==(y=z); ②:printf("%d\n",x);

x=(y==z); ③:printf("%d\n",x);

x=(y&z); ④:printf("%d\n",x);

x=(y&&z); ⑤:printf("%d\n",x);

y=4;

x=(y|z); ⑥:printf("%d\n",x);

x=(y||z); ⑦:printf("%d\n",x);

以上共有7個 x的輸出,分別是 10、10、1、3、1、7、1;

怎麼樣?大家都對了嗎?這裡總結一下,賦值符號和判斷符號;

第二個輸出,先是z的值賦給了y,y=z=3; x==(y=z);兩個符號是比較,並不會影響x的本身的值,所以x還是10;

第三個輸出:x=(yz);先是判斷y是否和z相等,再把這個值賦給x;那麼執行到這裡,y,z是相等的,所以,(yz)這裡是判斷是真返回1,這個1再賦給了x,所以第三個x 是1;

##3.找出兩個數中最大值。

找出兩個數中的最大值,簡單?那麼我們試試不用if、三目運算子呢?

兩個數 a、b;找出最大的值。

max=( (a+b) + abs(a-b)) /2;

##4.交換兩個值不定義中間變數

a、b兩個數進行交換,但是前提是不定義新的變數,試試吶。

以下是個人總結的三種方法:

①:a = a+b -(b=a);

②:利用按位異或

a=a^b;

b=a^b;

a=a^b;

③: a=a+b;

b=a-b;

a=a-b;

哪怕是一點點,我都希望分析給你。願與君共勉。

若有缺失之處,請大家指教。

前置操作符和後置操作符

操作符可以被過載 全域性函式和成員函式均可以進行過載 過載前置 操作符不需要額外的引數 過載後置 操作符需要乙個int型別的佔位引數 來看乙個例子 include include using namespace std class test intvalue test operator test o...

關係操作符和邏輯操作符

關係操作符和邏輯操作符使用算術或指標型別的運算元,並返回bool 型別的值。操作符功能用法 logical not 邏輯非 expr less than 小於 expr expr less than or equal 小於等於 expr expr greater than 大於 expr expr ...

MySQL的and操作符和or操作符

有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...