昆明网站建设天锐科技项目推广网站
C++Primer第五版 阅读笔记
- 第1章开始
- 1.1 编写一个简单的C++程序
- 1.1.1 编译、运行程序
- 1.2 初识输入输出
第1章开始
学习一门新的程序设计语言的最好方法就是练习编写程序。
1.1 编写一个简单的C++程序
每个C++程序都包含一个或多个函数,其中一个必须命名为 main,操作系统通过调用 main 来运行C++程序。
一个函数定义包括:
- 返回类型。
- 函数名。
- 形参列表。
- 函数体:以 { 开始 ,以 } 结束的语句块。
main 函数的返回类型必须为 int。
return 语句包括一个值时,返回值类型必须与函数的返回类型相容。
类型相容:类型相同或能够进行隐式转换。
main 返回值被用来指示状态,0表示成功,非0的含义由系统定义,通常用来指出错误类型。
类型决定:
- 内容。
- 运算。
- 内存空间。
1.1.1 编译、运行程序
常见源文件命名约定:.cc、.cxx、.cpp、.cp及.C。
操作系统 / 编译器 | 编译 | 运行 | 访问 main 的返回值 | 备注 |
---|---|---|---|---|
UNIX | CC prog1.cc 生成可执行文件 a.out | a.out 或者 ./a.out (指出该文件在当前目录) | echo $? | |
Windows | CC prog1.cc 生成可执行文件 prog1.exe | prog1 或者 .\prog1 (指出该文件在当前目录) | $ echo %ERRORLEVEL% | |
GNU | g++ -o prog1 prog1.cc 生成可执行文件 prog1 | ./prog1 (指出该文件在当前目录) | -o 指定可执行文件的文件名。UNIX生成 prog1 。Windows生成 prog1.exe 。省略 -o prog1 UNIX 系统生成 a.out 可执行文件。Windows 系统生成 a.exe 可执行文件。使用GNU编译器需要指定 -std=c++0x 参数来打开对C++11的支持。 | |
Visual Studio | cl /Ehsc prog1.cpp 自动生成可执行文件 prog1.exe | prog1 或 .\prog1 或 .\prog1.exe (指出该文件在当前目录) | 命令 cl 调用编译器。/Ehsc 是编译器选项,用来打开标准异常处理。生成可执行文件名字与第一个源文件名对应,后缀为.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(可以理解为常规日志输出)
每个使用标准库设施的程序都必须包含相关的头文件。
#include指令和头文件的名字必须写在同一 行中。
通常情况下,#include指令必须出现在所有函数之外。
一般将一个程序的所有#include指令都放在源文件的开始位置。
C++中,一个表达式产生一个计算结果。
表达式:一个或多个运算对象和(通常是)一个运算符组成。
cout 中使用的 << 运算符 和 cin 中使用的 >> 运算符均返回运算符左侧对象,使得cout 和 cin 支持链式操作。
字符串字面值常量:一对双引号包围的字符序列。
endl:
- 操作符。
- 结束当前行。
- 刷新缓冲区。
注意:调试程序时添加打印语句应该保证一直刷新缓冲区,否则会出现程序崩溃时输出还留在缓冲区,影响程序崩溃位置的判断。
命名空间的作用:避免不经意的名字冲突。
标准库定义的所有名字都在命名空间 std
中。
命名空间的使用推荐:
- 建议使用(不释放命名空间):
std::cout<<"hello world"<<endl;
- 可以使用(释放部分命名空间):
using std::cout;
cout<<"hello world"<<endl;
- 尽量少用(释放整个命名空间):
using std;
cout<<"hello world"<<endl;
初始化:创建变量的同时赋值。