我不生產自己不熟悉的內容,我只是陌生內容的搬運工!向原作致敬!
&&是邏輯運算子
,&是位運算子
&和|可以進行邏輯運算也可進行位運算,
&&,|| 兩邊只能是bool型別
&,| 兩邊可以是bool型別或者是數值型別
區別:if (a && b) 如果 a 為 false ,整個表示式就為 false,不再計算 b 的值了。
if (a & b) 如果 a 為 false ,整個表示式就為 false,但還要計算 b 的值。
if (a && b++) 如果a 為 false,&&不會再計算後面的值
if (a & b++) 如果a 為 false,&則會計算後面的值
(&) 為整型和 bool 型別預定義了兩種運算規則。
對於整型,& 計算運算元的按位「與」;對於 bool 運算元,& 計算運算元的邏輯「與」;
也就是說對於bool型別 & 和&&的if判斷結果是相同的。
對於整形資料&&只判斷真假(0或非0),兩邊的資料必須都為真或任一方為假;
對於整形資料&兩邊的資料則進行按位與運算,並返回計算結果讓if判斷這個值
邏輯(and): true && false : false
按位(and): 1001 0110 & 1111 1111 : 1001 0110 (二進位制位)
C 中的4種運算子轉化以及它們的不同點
4種運算子如下 1 const cast 操作符 用來幫助呼叫那些應該使用卻沒有使用const關鍵字的函式。換句話說,就是供程式設計師在特殊情況下將限制為const成員函式的const定 除,使其能更改特定屬性。2 dynamic cast 操作符 如果啟動了支援執行時間型別資訊 rtti dyna...
和 和 運算子
今天在看hashmap原始碼時發現有幾個沒見過的運算子 總結如下。圖一 以上 執行的結果為1和0 你會發現運算的規則是 兩個數進行異位運算時,兩個變數值相同時,則值是0,其中乙個變數為0,則值是另外乙個變數的值。圖二 以上 執行的結果為3,2,1 你會發現 第5行和第6行像除法是吧,這麼以為你就錯了...
if和switch的不同點
1 if的括號內的表示式可以分別是布林型別的合法表示式 可以是所有大於0的正s整數為true,反之為小於等於0的正整數為false 可以是常量 列舉 而switch括號內也符合前面if提到的外,就是當圓括號內為正整數只能是0或1,其它的正整數屬於 default範圍。這點可以看如下 switch 2...