C++(5)--运算符、表达式、条件结构(if, switch)
C++運算符、表達式 條件結構
- 1.表達式與運算符
- 1.1賦值運算符
- 1.2算術運算符
- 1.3關系運算符
- 1.4邏輯運算符
- 1.5位運算符
- 1.6 sizeof()
- 1.7 三目運算符
- 1.8 運算符的優先級
- 2.條件結構
- 2.1--if
- 2.2 --switch結構
- 2.3 switch 和 多重if 結構的對比
條件結構)
《老九學堂C++課程》《C++ primer》學習筆記。《老九學堂C++課程》詳情請到B站搜索《老九零基礎學編程C++入門》
-------------簡單的事情重復做,重復的事情用心做,用心的事情堅持做(老九君)---------------
1.表達式與運算符
(上一章只講了算術運算符號)
運算符:賦值運算符,算術運算符,關系運算符,邏輯運算符
表達式:符號和操作數的組合
1.1賦值運算符
從右向左運算,將右邊的值賦給左邊的對象
復合賦值運算符: +=, *=, ,\=,
1.2算術運算符
一元運算符:++, --;二元運算符:+,-,*,/,%
1.3關系運算符
比較符號兩邊對象的關系,(結果是0/1):>,<,>=,<=,==,!=
#include <iostream> int main(){cout << "15 > 88 嗎?" << (15 > 88) << endl;cout << "16 > 99 嗎?" << (16 < 99) << endl;cout << boolalpha; // 設置輸出True, Falsecout << "15 > 88 嗎?" << (15 > 88) << endl;cout << "16 > 99 嗎?" << (16 < 99) << endl;return 0; }輸出
15 > 88 嗎?0 16 > 99 嗎?1 15 > 88 嗎?false 16 > 99 嗎?true1.4邏輯運算符
(與、或、非)&&、||、 !
(python 中使用 and, or, not 來表示邏輯運算符 與,或,非)
1.5位運算符
| & | 按位與 | 兩位同時為1時,結果為1 |
| | | 按位或 | 兩位有一個為1時,結果為1 |
| ~ | 按位非 | 操作數為1,結果為0;操作數為0,結果為1 |
| ^ | 按位異或 | 兩個操作數相同,結果為0,不同結果為1 |
| << | 左移 | 右側補零 |
| >> | 右移 | 左側補符號位 |
輸出
4 -3 16 2 24提示1: 正數按位取反后為負數,負數在內存中是以補碼的形式存儲的。2->00000010 取反11111101.第一個位符號位,第一位為為0正數,第一位為1的為負數。負數在計算機中以補碼的方式存儲,11111101如何轉換為十進制呢?將二進制取反+1乘以負一。
提示2:區分cout 運算符(<<運算符重載),左移,右移操作符號兩邊都是數字,用在2 的倍數。用來處理2的倍數十分高效
1.6 sizeof()
Sizeof 認為是一個運算符,測量數據類型占內存空間的大小,單位為字節
sizeof(type_name)
demo1
#include <iostream> using namespace std; int main(){cout << sizeof(int) << endl;cout << sizeof(10) << endl;cout << sizeof(0.1) << endl;cout << sizeof("abc") << endl; // 字符串類型會自動在末尾加\0return 0;}輸出
4 4 8 4demo2: sizeof(num++)
int main(){int num = 5;cout << sizeof(num++) << endl; //sizeof 只是一個運算符,不湊成任何運算,mac的編譯器過不去cout << num << endl;return 0; }應該輸出
4 51.7 三目運算符
(條件)?條件滿足表達式的結果:條件不滿足表達式的結果
int num= 5>6 ? 10 :12;
1.8 運算符的優先級
1.單目運算符~, ++,–,sizeof()
2.!
3.算術運算符
4.關系運算符
5.&&, ||
6.賦值運算符
(有限級別由上到下依次遞減)
2.條件結構
2.1–if
單個if
代碼格式(python 的條件/else后要接冒號,C++條件在括號中,代碼塊用大括號界定)整個if 語句作為一條語句
demo1–硬盤盤符一半采用A-Z的大小字母表示,使用程序判斷用戶輸入的字符是否是合法的硬盤盤符
(早期的計算機是AB軟盤,所以硬盤盤符號一般從C開始)
demo2-購物車打折
int main(){// 購物車總價大于5W打7折,否則打9折double price_louis = 35000.0;double price_hemes = 11044.5;double price_chanel = 1535.0;double total_price = 0.0;double discout = 0.0;total_price = price_louis + price_hemes + price_chanel;if (total_price > 50000 || price_louis > 1000 || price_chanel > 1000 || price_hemes > 1000){discout = 0.7;}else{discout = 1.0;}cout << "最終付款: " << total_price * discout << endl;return 0; } 最終付款: 33305.7多重if結構
常用來做區間判斷(python 中else if 是連在一起寫的,寫作elif)
2.2 --switch結構
開關語句,
1.switch 后的表達式只能是整型或者字符型,
2.case 后常量表達式的值不能相同;
3.可以不添加break,但是需要特別注意執行的順序(進到一個分支里頭,沒有遇到break語句會一直執行到最后);
4.case 和defult字句的先后順序可以自行變動>
用途:菜單選擇,判斷某個月份有幾天
demo1
int main(){int choice = 2;switch(choice){case 1:cout << 1 << endl;case 2:cout << 2 << endl;case 3:cout << 3 << endl;break;case 4:cout << 4 << endl;}return 0; } 2 3demo 2: default 放在開頭,如果所有的情況不滿足的化會執行default,直至至遇到的第一break,或者最后;如果有一個case滿足會執行該case,見demo3.
int main(){int choice = 7;switch(choice){default:cout << 998 << endl;case 1:cout << 1 << endl;case 2:cout << 2 << endl;break;case 3:cout << 3 << endl;break;case 4:cout << 4 << endl;}return 0; } 998 1 2demo3–demo2的變形,如果有case 滿足,是不會執行default 的了
int main(){int choice = 3;switch(choice){default:cout << 998 << endl;case 1:cout << 1 << endl;case 2:cout << 2 << endl;break;case 3:cout << 3 << endl;break;case 4:cout << 4 << endl;}return 0; } 32.3 switch 和 多重if 結構的對比
相同點:都是用來處理多分支條件結構
不同點:
switch: 等值條件判斷,條件個數有限(殺雞刀,大于20個分支,就不要用了)
多重if:判斷某個連續區間時的情況(殺牛刀)
demo: 判斷一個有多少天, case 中的語句可以省略
總結
以上是生活随笔為你收集整理的C++(5)--运算符、表达式、条件结构(if, switch)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《深入理解JVM.2nd》笔记(三):垃
- 下一篇: 数据结构和算法(03)---栈和队列(c