第 5 章 迴圈和關係表示式

2021-09-27 16:50:13 字數 3517 閱讀 3032

for 迴圈包括:迴圈的初始化(loop initialization)、迴圈測試(loop test)、迴圈體(loop body)& 迴圈更新(loop update)

示例 1:

for (i = 0; i < 5; i++)

cout << i << endl;

迴圈的初始化(loop initialization):i = 0;

迴圈測試(loop test):i < 5

迴圈體(loop body): cout << i << endl;

迴圈更新(loop update):i++

1、設定初始值;

2、執行測試,看看迴圈是否應當繼續執行;

3、執行迴圈操作;

4、更新用於測試的值。

注意:c++並沒有將 測試語句(test-expression) 的值限制位只能為真或假,可以使用任意表示式。c++會將結果強制轉換為布林型別。

示例 2:

#include int main()

cout.setf(ios_base : : boolalpha);
函式呼叫設定了乙個標記,該標記命令cout 顯示 true or false ,而不是 1 or 0.

示例 3:

int main()

示例 4:

#include #include int main()

示例 5:

#include #include int main()

cout << word << endl;

return 0;

}

a++:使用 a 當前的值,隨後 +1;

++b: b +1,隨後使用新的值。

double arr[5] = ;

double *pt = arr; //arr[0], 21.1

++pt; // arr[1], 32.8

*++pt; // arr[2], 23.4

++*pt; // arr[2] + 1, 24.4

(*pt)++; // 先 arr[2] + 1 = 24.4, 然後 arr[3]

x = *pt++; // 先 arr[3] = 45.2, 再 arr[4]

賦值運算子:+= 、 -=、*=、/=、%=

關係運算子:<、<=、==、>、>=、!=

注意: = 是賦值運算子,而 == 是關係運算子,不要混淆。

見 示例5 程式塊

復合語句的特性:

1、如果在語句塊中定義乙個新的變數,僅當程式執行該語句塊中的語句時,該變數才存在,執行完語句塊中的語句,該變數被釋放。

2、在外部語句中定義的變數在內部語句塊中也是被定義了

3、如果在乙個語句塊中宣告了乙個變數,而在外部語句塊中也宣告了,則:

示例 6:

int x = 20;

cout << x << endl; // 20

兩個作用:

++j, --i; // 作為乙個表示式執行

int i, j; // 分隔符作用

示例 7:

int main()

cout << "after loop ends, word is " << word << endl;

return 0;

}

示例 8:

int main()

cout << "after loop ends, word is " << word << endl;

return 0;

}

兩個程式輸出結果一樣,但比較方式不同。

while(name[i] != '\0') // 與while(name[i])等同
long wait = 0;

while(wait < 10000)

wait++;

使用clock() 和 標頭檔案 ctime 來建立延時迴圈

#include int main()

#define byte char

typedef char byte;

如果程式需要使用迴圈來讀取來自鍵盤的文字輸入,需要知道何時停止。

一種方法是設定哨兵字元。

示例 9:

cin >> ch; //獲取第乙個字元

// 判斷第乙個字元是否為 #

while(ch != '#') // # 為哨兵字元

// see kun run#really ...

// seekunrun 碰到#停止讀取,不讀取空格

// cin 將忽略空格和換行符。因此輸入中的空格沒有被顯示,也沒有在計數內

// count = 9 不計入空格

cin.get(ch);

while(ch != '#')

// see kun run#really ...

// see kun run 碰到#停止讀取

// count = 14

cin.get(name, arsize); // 1 

cin.get(); // 2

cin.get(ch); // 3

檢測到eof:eofbit = 1 & failbit = 1

while(cin.eof() == false) //檢測到檔案末尾eof,cin.eof() 返回false,不進入迴圈

// 反之 返回 true 進入迴圈

while(cin.fail() == false) //檢測到檔案末尾eof,cin.fail() 返回false,不進入迴圈

// 反之 返回 true 進入迴圈

常見的字元輸入法:

// 1

cin.get(ch); // 獲取第乙個字元

while(cin.fail() == false)

// 2

cin.get(ch);

while(!cin.fail())

// 3

cin.get(ch);

while(cin) // 比!cin.fial() or !cin.eof() 更通用

//它可以檢測到其他故障原因,如磁碟故障

// 4

while(cin.get(ch)) // 由於 cin.get(char) 的返回值為cin, 因此可以將迴圈簡化成這種

第5章 表示式

不想從第一章開始看起,看目錄覺得對第五章中的bitset和sizeof有點興趣,嗯,研究一下。1 if ival ival作為乙個條件表示式,非0時,if條件成立。表示式結果是右值,可讀取結果,不能對它進行賦值。2 短路求值 邏輯與和邏輯或總先計算左運算元。且只在左運算元無法確定結果時,才會求解右運...

迴圈和關係表示式

一 for迴圈 1.在引入bool型別之前,關係表示式為ture 被判定為1 如果為false,被判定為0。2.函式cout.setf 設定了乙個標記。該標記命令cout顯示ture和false,而不是1和0。函式引數為cout.setf ios base boolalpha 但在老式c 可能要求使...

第5章 表示式 4

5.12 型別轉換 c 並不是把兩個不同型別的值直接加在一起,而是提供了一組轉換規則,以便在執行算術操作之前,將兩個運算元轉換為同一資料型別。這些轉換規則由編譯器自動執行,無需程式設計師介入 有時甚至不需要程式設計師了解。因此,它們被稱為隱式型別轉換 implicit type conversion...