張店易寶網站建設百度分公司
C++Primer第五版 閱讀筆記
- 第1章開始
- 1.1 編寫一個簡單的C++程序
- 1.1.1 編譯、運行程序
- 1.2 初識輸入輸出
第1章開始
學習一門新的程序設計語言的最好方法就是練習編寫程序。
1.1 編寫一個簡單的C++程序
每個C++程序都包含一個或多個函數,其中一個必須命名為 main,操作系統(tǒng)通過調用 main 來運行C++程序。
一個函數定義包括:
- 返回類型。
- 函數名。
- 形參列表。
- 函數體:以 { 開始 ,以 } 結束的語句塊。
main 函數的返回類型必須為 int。
return 語句包括一個值時,返回值類型必須與函數的返回類型相容。
類型相容:類型相同或能夠進行隱式轉換。
main 返回值被用來指示狀態(tài),0表示成功,非0的含義由系統(tǒng)定義,通常用來指出錯誤類型。
類型決定:
- 內容。
- 運算。
- 內存空間。
1.1.1 編譯、運行程序
常見源文件命名約定:.cc、.cxx、.cpp、.cp及.C。
操作系統(tǒng) / 編譯器 | 編譯 | 運行 | 訪問 main 的返回值 | 備注 |
---|---|---|---|---|
UNIX | CC prog1.cc 生成可執(zhí)行文件 a.out | a.out 或者 ./a.out (指出該文件在當前目錄) | echo $? | |
Windows | CC prog1.cc 生成可執(zhí)行文件 prog1.exe | prog1 或者 .\prog1 (指出該文件在當前目錄) | $ echo %ERRORLEVEL% | |
GNU | g++ -o prog1 prog1.cc 生成可執(zhí)行文件 prog1 | ./prog1 (指出該文件在當前目錄) | -o 指定可執(zhí)行文件的文件名。UNIX生成 prog1 。Windows生成 prog1.exe 。省略 -o prog1 UNIX 系統(tǒng)生成 a.out 可執(zhí)行文件。Windows 系統(tǒng)生成 a.exe 可執(zhí)行文件。使用GNU編譯器需要指定 -std=c++0x 參數來打開對C++11的支持。 | |
Visual Studio | cl /Ehsc prog1.cpp 自動生成可執(zhí)行文件 prog1.exe | prog1 或 .\prog1 或 .\prog1.exe (指出該文件在當前目錄) | 命令 cl 調用編譯器。/Ehsc 是編譯器選項,用來打開標準異常處理。生成可執(zhí)行文件名字與第一個源文件名對應,后綴為.exe。 |
GUN編譯器選項 -Wall 使用說明:生成所有警告信息。
Visual Studio 編譯器 /W4 使用說明:開啟編譯器 4級 警告信息。詳細見 Microsoft C/C++ 編譯器和生成工具錯誤與警告 官方文檔。
點擊此處進入:Microsoft C/C++ 編譯器和生成工具錯誤與警告官方文檔
1.2 初識輸入輸出
C / C++ 語言未定義任何輸入輸出語句,而是使用標準庫提供IO機制(個人理解是是為了修改、拓展和升級方便)。
iostream庫包含:
- 流輸入類型:istream
- 流輸出類型:ostream
標準庫定義的4個IO庫:
- 標準輸入:cin
- 標準輸出:cout
- 標準錯誤:cerr(輸出警告和錯誤信息)
- 輸出程序運行時的一般性信息:clog(可以理解為常規(guī)日志輸出)
每個使用標準庫設施的程序都必須包含相關的頭文件。
#include指令和頭文件的名字必須寫在同一 行中。
通常情況下,#include指令必須出現在所有函數之外。
一般將一個程序的所有#include指令都放在源文件的開始位置。
C++中,一個表達式產生一個計算結果。
表達式:一個或多個運算對象和(通常是)一個運算符組成。
cout 中使用的 << 運算符 和 cin 中使用的 >> 運算符均返回運算符左側對象,使得cout 和 cin 支持鏈式操作。
字符串字面值常量:一對雙引號包圍的字符序列。
endl:
- 操作符。
- 結束當前行。
- 刷新緩沖區(qū)。
注意:調試程序時添加打印語句應該保證一直刷新緩沖區(qū),否則會出現程序崩潰時輸出還留在緩沖區(qū),影響程序崩潰位置的判斷。
命名空間的作用:避免不經意的名字沖突。
標準庫定義的所有名字都在命名空間 std
中。
命名空間的使用推薦:
- 建議使用(不釋放命名空間):
std::cout<<"hello world"<<endl;
- 可以使用(釋放部分命名空間):
using std::cout;
cout<<"hello world"<<endl;
- 盡量少用(釋放整個命名空間):
using std;
cout<<"hello world"<<endl;
初始化:創(chuàng)建變量的同時賦值。