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...