運算子的優先順序
關於上面的優先順序的問題:
什麼是位運算?什麼是移位操作?
答:程式中的所有數在計算機記憶體中都是以二進位制儲存的,位運算就是對整數在記憶體中的二進位制位進行操作。
通常用於二進位制的取位操作,乙個數與1& 的結果就是取二進位制的最末位,這個可以用來判斷乙個整數的奇偶。二進位制的最末位為0 為偶數,二進位制的最末尾為1為奇數。
相同取1,不同取0
通常用於二進位制特定位上的無條件賦值,乙個數與1 |的結果就是把二進位制的最後一位強行變為1,如果需要把二進位制的最後一位變成0,對這個數| 1之後再減1就可以了,其實際意義就是把這個數強行變成最接近的偶數。
有1為1
對等長二進位制模式按位或二進位制的每一位執行邏輯按位異或操作,操作的結果是:相同為0.不同為1
異或運算的逆運算是它本身,即兩次異或同乙個數,結果不變,可以進行簡單的加密
swap的三種過程
#includeusing namespace std;
void swap1(int &x,int &y)
void swap2(int &x, int &y)
void swap3(int &x, int &y)
int main()
*/int main()
即把a轉化為二進位制之後,左移b位(在後面添b個0),實際上就是a*2的b次方,在二進位制後面添乙個0,就相當於給該數*2;
即把a 轉化為二進位制之後,右移b 位,去掉末位的0,相當於a除以2的b次方。
2.復合表示式
a=b=c=0
if(a>b>c)//這種寫法是數學表示式的寫法
應該寫成if ((a>b) && (b>c))
1. if語句與零值的比較(重點關注)
1) bool 變數與零值的比較
if (flag)
if (!flag)
2) 整型常量與零值的比較
if (value == 0)
if (value != 0)
3) 浮點變數與零值的比較
if( (x>=ersinon) && (x <= -epsinon));
epsinon 是精度(允許的誤差)
4) 指標變數與零值的比較
if (p == null)
if (p != null)
2. 迴圈語句(效率問題)
優先順序運算子結合律優先
級從高到
低()函式 [ ]陣列 -> 指標 .物件 前述運算子
從左到右
! ~按位取反 ++ -- (型別) sizeof
+ 正 –負 *間接 & 單目運算子
從右向左
* / % 雙目運算子
從左向右
+ - 算術運算子
從左向右
<< >> 移位運算子
從左向右
從左到右
== !=關係運算子
從左到右
& 按位與
從左至右
^按位異或
從左到右
| 按位或
從左到右
&& 邏輯與
從左到右
||邏輯或 邏輯運算子 雙目運算子
從右到左
?:條件運算子三目運算子
從右到左
= += -= *= /= %= &= ^=
= <<= >>= 賦值運算子
從左向右
表示式與語句
表示式是由運算子和運算元組合構造成。最簡單的表示式是乙個單獨的運算元,以此作為基礎,結合語言自身支援的操作符,就可以建立複雜的表示式。下面是一些表示式 4 53.14 9 a b 7 30 b 5 從這裡可以看到,運算元可以是資料常量 4,5 變數 a,b 或者是二者的組合 b 7 每乙個表示式都有...
表示式和基本語句與位運算
表示式和基本語句 if語句 分支 單分支 雙分支 多分支 if 語句是 c 語言中最簡單 最常用的語句,然而很多程式設計師用隱含錯誤的方式寫 if 語句 布林變數與零值比較 整型變數與零值比較 浮點變數與零值比較 指標變數與零值比較 while for 語句c c 迴圈語句中,for 語句使用頻率最...
語句 表示式與if分支
行長 每行不建議超過79個字元 空行 要將程式的不同部分分開可使用空行 可以使用元祖或者列表對多個變數賦值 x,y 5,10 x5y10 a,b,c 1 2,3 a1b2 c3 外邊括號去掉也不影響 x,y 5,10x5y 10 可以以元祖的形式同時顯示多個值 x,y 5,10 當前面變數個數和後面...