int val = 2; if(val==true){ //if內的語句不會被執行。 cout<<"val==true"<<endl; }
-- 、++運算符能夠在一次計算中進行疊加,如:----a就是在運行這個表達式時對a連續自減兩次,再繼續向下運行。ios
#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c; c = a + b; cout << "Line 1 - c 的值是 " << c << endl ; c = a - b; cout << "Line 2 - c 的值是 " << c << endl ; c = a * b; cout << "Line 3 - c 的值是 " << c << endl ; c = a / b; cout << "Line 4 - c 的值是 " << c << endl ; c = a % b; cout << "Line 5 - c 的值是 " << c << endl ; int d = 10; // 測試自增、自減 c = d++; cout << "Line 6 - c 的值是 " << c << endl ; d = 10; // 從新賦值 c = d--; cout << "Line 7 - c 的值是 " << c << endl ; return 0; }
產生結果以下:測試
Line 1 - c 的值是 31 Line 2 - c 的值是 11 Line 3 - c 的值是 210 Line 4 - c 的值是 2 Line 5 - c 的值是 1 Line 6 - c 的值是 10 Line 7 - c 的值是 10
#include <iostream> using namespace std; int main() { int a = 21; int b = 10; int c ; if( a == b ) { cout << "Line 1 - a 等於 b" << endl ; } else { cout << "Line 1 - a 不等於 b" << endl ; } if ( a < b ) { cout << "Line 2 - a 小於 b" << endl ; } else { cout << "Line 2 - a 不小於 b" << endl ; } if ( a > b ) { cout << "Line 3 - a 大於 b" << endl ; } else { cout << "Line 3 - a 不大於 b" << endl ; } /* 改變 a 和 b 的值 */ a = 5; b = 20; if ( a <= b ) { cout << "Line 4 - a 小於或等於 b" << endl ; } if ( b >= a ) { cout << "Line 5 - b 大於或等於 a" << endl ; } return 0; }
產生結果以下:spa
Line 1 - a 不等於 b Line 2 - a 不小於 b Line 3 - a 大於 b Line 4 - a 小於或等於 b Line 5 - b 大於或等於 a
先判斷左值是否爲假,若爲假則直接獲得整個表達式的值爲假,&&運算符右側的表達式將再也不被執行。反之,則繼續執行表達式,計算最終結果。
可使用該特性將右側的表達式視爲一個if語句的條件,判斷右側表達式是否爲真。指針
先判斷左值是否爲真,若爲真則直接獲得整個表達式的值爲假,||運算符右側的表達式將再也不被執行。反之,則繼續執行表達式,計算最終結果。code
#include <iostream> using namespace std; int main() { int a = 5; int b = 20; int c ; if ( a && b ) { cout << "Line 1 - 條件爲真"<< endl ; } if ( a || b ) { cout << "Line 2 - 條件爲真"<< endl ; } /* 改變 a 和 b 的值 */ a = 0; b = 10; if ( a && b ) { cout << "Line 3 - 條件爲真"<< endl ; } else { cout << "Line 4 - 條件不爲真"<< endl ; } if ( !(a && b) ) { cout << "Line 5 - 條件爲真"<< endl ; } return 0; }
產生結果以下:對象
Line 1 - 條件爲真 Line 2 - 條件爲真 Line 4 - 條件不爲真 Line 5 - 條件爲真
00001011 & 00000011 = 00000011 = 3
00001011 | 00000011 = 00001011 = 11
a ^ 0 = a
任何數異或同一個數兩次獲得的數不變教程
a ^ b ^ b = a
#include <iostream> using namespace std; int main() { unsigned int a = 60; // 60 = 0011 1100 unsigned int b = 13; // 13 = 0000 1101 int c = 0; c = a & b; // 12 = 0000 1100 cout << "Line 1 - c 的值是 " << c << endl ; c = a | b; // 61 = 0011 1101 cout << "Line 2 - c 的值是 " << c << endl ; c = a ^ b; // 49 = 0011 0001 cout << "Line 3 - c 的值是 " << c << endl ; c = ~a; // -61 = 1100 0011 cout << "Line 4 - c 的值是 " << c << endl ; c = a << 2; // 240 = 1111 0000 cout << "Line 5 - c 的值是 " << c << endl ; c = a >> 2; // 15 = 0000 1111 cout << "Line 6 - c 的值是 " << c << endl ; return 0; }
產生結果以下:string
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
多個賦值運算符連續賦值時,各對象必須具備相同的數據類型,或者具備可轉換爲同一類型的數據類型。it
int ival; int *pval; ival = pval = 0; //error 儘管ival和pval均可以賦值爲0 string s1,s2; s1 = s2 = "OK"
#include <iostream> using namespace std; int main() { int a = 21; int c ; c = a; cout << "Line 1 - = 運算符實例,c 的值 = : " <<c<< endl ; c += a; cout << "Line 2 - += 運算符實例,c 的值 = : " <<c<< endl ; c -= a; cout << "Line 3 - -= 運算符實例,c 的值 = : " <<c<< endl ; c *= a; cout << "Line 4 - *= 運算符實例,c 的值 = : " <<c<< endl ; c /= a; cout << "Line 5 - /= 運算符實例,c 的值 = : " <<c<< endl ; c = 200; c %= a; cout << "Line 6 - %= 運算符實例,c 的值 = : " <<c<< endl ; c <<= 2; cout << "Line 7 - <<= 運算符實例,c 的值 = : " <<c<< endl ; c >>= 2; cout << "Line 8 - >>= 運算符實例,c 的值 = : " <<c<< endl ; c &= 2; cout << "Line 9 - &= 運算符實例,c 的值 = : " <<c<< endl ; c ^= 2; cout << "Line 10 - ^= 運算符實例,c 的值 = : " <<c<< endl ; c |= 2; cout << "Line 11 - |= 運算符實例,c 的值 = : " <<c<< endl ; return 0; }
產生結果以下:io
Line 1 - = 運算符實例,c 的值 = 21 Line 2 - += 運算符實例,c 的值 = 42 Line 3 - -= 運算符實例,c 的值 = 21 Line 4 - *= 運算符實例,c 的值 = 441 Line 5 - /= 運算符實例,c 的值 = 21 Line 6 - %= 運算符實例,c 的值 = 11 Line 7 - <<= 運算符實例,c 的值 = 44 Line 8 - >>= 運算符實例,c 的值 = 11 Line 9 - &= 運算符實例,c 的值 = 2 Line 10 - ^= 運算符實例,c 的值 = 0 Line 11 - |= 運算符實例,c 的值 = 2
運算符 | 描述 |
---|---|
sizeof | sizeof 運算符返回變量的大小。例如,sizeof(a) 將返回 4,其中 a 是整數。 |
Condition ? X : Y | 條件運算符。若是 Condition 爲真 ? 則值爲 X : 不然值爲 Y。 |
.(點)和 ->(箭頭) | 逗號運算符會順序執行一系列運算。整個逗號表達式的值是以逗號分隔的列表中的最後一個表達式的值。 |
& | 指針運算符 & 返回變量的地址。例如 &a; 將給出變量的實際地址。 |
* | 指針運算符 * 指向一個變量。例如,*var; 將指向變量 var。 |
Cast | 強制轉換運算符把一種數據類型轉換爲另外一種數據類型。例如,int(2.2000) 將返回 2 |
下表將按運算符優先級從高到低列出各個運算符,具備較高優先級的運算符出如今表格的上面,具備較低優先級的運算符出如今表格的下面。在表達式中,較高優先級的運算符會優先被計算。
類別 | 運算符 | 結合性 |
---|---|---|
後綴 | () [] -> . ++ - - | 從左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 從右到左 |
乘除 | * / % | 從左到右 |
加減 | + - | 從左到右 |
移位 | << >> | 從左到右 |
關係 | < <= > >= | 從左到右 |
相等 | == != | 從左到右 |
位與 AND | & | 從左到右 |
位異或 XOR | ^ | 從左到右 |
位或 OR | 從左到右 | |
邏輯與 AND | && | 從左到右 |
邏輯或 OR | 從左到右 | |
條件 | ?: | 從右到左 |
賦值 | = += -= *= /= %=>>= <<= &= ^= | 從右到左 |
逗號 | , | 從左到右 |
#include <iostream> using namespace std; int main() { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 cout << "(a + b) * c / d 的值是 " << e << endl ; e = ((a + b) * c) / d; // (30 * 15 ) / 5 cout << "((a + b) * c) / d 的值是 " << e << endl ; e = (a + b) * (c / d); // (30) * (15/5) cout << "(a + b) * (c / d) 的值是 " << e << endl ; e = a + (b * c) / d; // 20 + (150/5) cout << "a + (b * c) / d 的值是 " << e << endl ; return 0; }
產生結果以下:
(a + b) * c / d 的值是 90 ((a + b) * c) / d 的值是 90 (a + b) * (c / d) 的值是 90 a + (b * c) / d 的值是 50
(主要來自菜鳥教程,融入了其餘教程以及本身的理解)