C++ Primer Plus 學習筆記1:循環結構

  • For 循環中省略了測試條件時,將認爲條件爲true。
  • clock_t爲系統時間的類型名的別名,因此無論系統時間是long 還是 unsigned long,都可以用clock_t聲明。CLOCKS_PER_SEC定義了系統時間與秒的換算關係。
  • typedef#define的區別是define在聲明多個變量時候只能拿別名替換一次,如果遇到#define byte char*然後用byte a,b聲明兩個變量,就會變爲char* a,b。這就是預處理器的作用——講代碼做一些自動的“複製粘貼”。
  • C++11開始提供了基於範圍的for循環,主要用於循環容器變量內部的值。
for(int x: {2, 3, 4, 5, 6})
{
	cout<<x<<endl;
}
  • 三種不同的輸入字符的方法進行比較(以後應該單獨開一個博客寫
    • cin忽略空格和換行符,即使輸入了也不會讀取。發送給cin的輸入被存到緩衝區,只有在用戶按下回車後,輸入的內容纔會發送給程序。
    • cin.get(ch)將讀取一行輸入,然後將其賦值給ch。這種輸入方式仍然將輸入先存到緩衝器,按下回車後發送給程序。
  • UNIX通過ctrl+D在鍵盤模擬文件尾條件。
  • 如果要想修改函數外的值,一定要在聲明的時候將該參數聲明爲引用,或者傳遞該參數的地址。
  • 因爲C++支持輸入輸出的重定向,所以如果輸入的是文件,我們就需要檢測文件的EOF(end of file)。如何檢測呢?最常見的方法是:
cin.get(ch);
while(cin.fail()==fail)
{
	...
	cin.get(ch);
}
  • 更高效的方法是:
while(cin.get(ch){
...
}
  • 因爲cin.get(ch)的返回值是cin,而cin會在需要bool值的位置自動返回bool量,如果成功則爲true
  • EOF是一個已經定義好的常量,如果用cin.get()函數,那麼直接把新讀取的字符與EOF做比較就可以了。注意:有些時候不允許將char類型與EOF作比較,那時需要強制類型轉換到int
  • 賦值語句的值爲左操作數的值
  • cin.get(ch)更加符合面向對象的原則,可以將多個調用串聯起來,因爲每次cin.get(ch)都會返回一個cin對象,所以cin.get(ch1).get(ch2)是合法的。
  • 當每一行初始化的數組長度不同時(主要指的是char數組,即字符串),可以將長度不同的字符串組成的數組初始化爲char指針數組。
  • cin忽略空格、換行符和製表符。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章