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位元運算子

留言

熱門文章