C++自修入門實境秀、C++ Primer 5版研讀秀 24/ ~4.7. The Conditional Operator-Visual St...
中斷點 Actions輸出 (第24集 3:15:00)
Log a message to Output Window:
用這個好處是不必在程式碼中寫cout印出又忘了抹掉,造成程式碼無謂地膨脹或誤入執行行,也不方便後人的解讀和維護 3:48:00
11:30 breakpoint Actions 14:00 Output Windows
Why did my Visual Studio 2019 Community print it in the Immediate Window, not in Output? Thanks.
感恩感恩 南無阿彌陀佛
第24集
2:35
Do not load project
5:55
Reload Project
Load Project Dependencies
只載入方案中需要用到的專案
9:50
Save as Solution Filter
將慣用載入的專案儲存起來以便下次載入
27:00
Visual Studio Productivity Tips
30:00
Kendra Havens' productivity features on GitHub
aka.mslink/netfeatures2019
35:00
Track Active Item in Solution Explorer
49:30
Ctrl+t,r
瀏覽最近開啟的檔案
51:19
Ctrl+Shift+backspace 回到上次編輯處
Ctrl+-則是回到上次看的地方
Ctrl則是反方向
54:30
Ctrl+Alt+滑鼠左鍵 可以以一樣的文字同時編輯不同地方(Ctrl+z即恢復)
58:00 在某個名稱上按下「Shift+Alt+.」,則會逐一選取(highlight)同名物件,並標識出來.
1:17:30
Ctrl+q 然後再下git指令即可執行git指令
1:28:20
程式碼片段
snippet
ctrl+k+x
ctrl+k+s
將選取範圍外用一個程式碼片段包起來
頁151
4.7. The Conditional Operator
1:43:00
1:45:30 類似VBA中的 iif(),或excel裡的if函式
條件運算子傳回來的值,要看運算元決定,2個運算元均是左值則傳回左值(lvalue),或者兩個運算元可以轉換成一個共通的左值(lvalue)型別。除此之外傳回均為右值(rvalue)。
1:54:30
Nesting Conditional Operations
條件運算式有3個部分,cond、expr1、expr2,任一部分皆可以用條件運算式來取代
This conditional asks whether the grade is less than 60. If so, the ? branch is evaluated and yields "fail". If not, the : branch returns "pass".
①斷句可見「?」「:」分2部分
⑦先抓動詞 asks this conditional 名詞作主語(主詞)
2:6:11
條件運算子是右結合的。
Associativity不是先被估算,而是先被分組
本書為何翻成結合,在此亦更看得出了。
先結合(分成一組後)再作為整個運算式一部分,而整個運算式的一部分,當然是從左讀至右了。
2:15:32
Using a Conditional Operator in an Output Expression
2:18:00
頁152
2:33:50
練習4.21
vector<int> ivec{ 0,3,5,6,8,-11,-23,111 };
for (int &iv : ivec) {
iv*=(iv % 2) ? 2 : 1;
}
2:42:15
練習4.22
int grade;
cin >> grade;
cout <<( (grade > 90) ? "high pass!" :
(grade <= 90 && grade > 75) ? "pass" :
(grade <= 75 && grade >= 60) ? "low pass" :
"fail")<<endl;
int grade;
cin >> grade;
if (grade > 90)
{
cout << "high pass!" << endl; return;
}
if (grade <= 90 && grade > 75)
{
cout << "pass" << endl;return;
}
if (grade <= 75 && grade >= 60)
{
cout<<"low pass" << endl;;return;
}
if (grade<60)
{
cout<<"fail" << endl;;
}
巢狀if結構清楚,易於了解
練習4.23
3:0:40
C# C++都是用「+」作字串連接(concatenate)
string s = "word";
string p1 = s +( (s[s.size() - 1] == 's' )? "" : "s");
這樣也可:
string p1 = s + (s[s.size() - 1] == 's' ? "" : "s");
字串可與字元加法(concatenate),此時字元會轉型成字串。但字串與字元不能作相等性比對。4:0:40
練習4.24
條件運算元一定要是右結合的,左結合就讀不通了,要讀通也得改變語法
string finalgrade= (grade > 90) ? "high pass" : (grade < 60) ? "fail" : "pass"
string finalgrade= (grade > 90) ? ("high pass" : (grade < 60) ? "fail") : "pass"
左結合應是如上例,以右「:」來判斷其左expr1是在cond後的
?帶expr1
:帶expr2
只是要大於90分的就傳回("high pass" : (grade < 60) ? "fail")否則傳回"pass"
而「("high pass" : (grade < 60) ? "fail")」是undefined
4.8. The Bitwise Operators
4.8位元運算子
留言