目录
0 开始
0.1 注释
//表示注释,编译器在编译时不会执行注释
0.2 #Include指令
输入/输出都不属于核心语言,而是标准库的一部分。
核心语言对所有的C++程序来说都是可用的,但是,在使用标准库时,必须明确指定我们所希望使用的那部分标准库。
#include <iosttream>
名称iostream表示对顺序、流或输入输出的支持,但是它不支持随机存储或图形输入/输出。
03 主函数 main
函数是一段具有名称的程序,程序的其他部分可以调用函数或使函数运行。
每个C++程序都必须含有一个名为main的函数。
main函数要返回一个整数类型的值作为结果,这样它就可以告知编译器是否成功运行。零值表示成功,其他任何值都表示程序运行存在问题。
int main ()
表示我们定义了一个名为main、返回值类型为int的函数。int是核心语言用来描述整数的名称。main后面的括号括住了函数从编译器中接受到的参数。
0.4 花括号
int main ()
{
//语句放此处
}
在C++中,花括号告诉编译器将出现在他们之间的全部内容当作一个单元来处理。
0.5 使用标准库进行输出
std::cout<<"Hello world!"<<std::endl;
名称之前的std::表明这个名称是一个名为 std 的命名空间的一部分。
标准头文件ostream定义了名称 cout 和 endl ,这些名称实际上就是 std::cout 和 syd::endl。
0.6 返回语句
返回值的类型必须与函数声明的返回类型一致。
0.7 进一步的深入
表达式和作用域
表达式包括操作数和运算符。每个操作数都有一个类型,类型表示的是一种数据结构以及对此数据结构的合理操作。运算符的效果则取决于它的操作数的类型。类型通常会有名称。核心语言定义int 作为一种类型的名称,代表整数。
std::cout<<"Hello world!"<<std::endl;
std::endl 为一个控制器,控制器的关键性质是:如果将一个控制器写到流中,我们就可以控制这个流了。
名称的作用域是程序的一部分,只有在这一部分中这个名称是有意义的。命名空间是一种作用域,它是一个相关名称的集合。名称 std::cout 是一个限定名称,它使用了:: 运算符。我们将:: 运算符称为作用域运算符。花括号也是一种作用域。main 的函数体(以及每个函数的函数体)本身就是一个作用域。
0.8 小结
程序结构:
以下三个实体不具有自由风格:
字符串字面量 用双引号括住的字符;不可以跨行
#include 名称 必须在单独的一行中出现(注释除外)
//注释 后面可以跟随任何东西;结束于当行的行尾
以/*开始的注释就有自由风格:它结束于第一个相邻的*/,并且可以跨越多行。
类型定义了数据结构以及对这些数据结构的操作。C++有两种形式的类型:核心语言提供的内建类型,如int ;以及定义在核心语言之外的类型,如 std::ostream。
iostream: istream 和 ostream
C++中的iostream库主要包含下图所示的几个头文件:
IOSstream 库 fstream iomainip ios iosfwd iostream istream ostream sstream streambuf strstream 我们所熟悉的输入输出操作分别是由istream(输入流)和ostream(输出流)这两个类提供的,为了允许双向的输入/输出,由istream和ostream派生出了iostream类。
iostream, istream 和 ostream的区别
命名空间是一种把相关名称聚集在一起的技术。来自标准库的名称是在名为 std 的名称空间中定义的。
字符串字面量从双引号开始而且结束于双引号;每个字符串字面量都必须出现在程序的一行中。如果字符串字面量中的字符是跟在反斜杠(\)后面,具有特殊含义:
\n 换行符
\t 水平制表符
\b 回退符
\" 当作字符串的一部分而不是当作字符串的结束符
\' 与字符串字面量中的 ' 具有一样的意义,用于保持字符字面量的一致性
\\ 若字符串中包括一个 \ ,那么可以将接下来的字符当作普通字符来看待
定义和头文件:C++程序使用的每一个名称都必须具有一个相应的定义。标准库在头文件中定义它的名称,程序通过#include指令访问这些名称。名称必须在使用前定义。
主函数 main:所有C++程序必须定义且只能定义一个名为main 的函数,这个函数返回一个int 类型的值。一般来说,函数必须包含至少一条的 return 语句,而且函数的最后一定要有 return 语句。但main 比较特殊,它可以没有返回语句;如果这样,编译器就会假设它返回0.
花括号和分号:出现在花括号中的零条或多条语句也是一条语句,它要求编译器实现按它们出现的先后次序来执行。在一对匹配的花括号之间的语句构成了一个作用域。表达式是可选的,忽略了表达式就会产生一条空语句,这条空语句是没有任何作用的。
输出:对 std::cout<<e 进行计算会将 e 的值写到标准输出流中,同时这个计算会产生类型为 ostream 的 std::cout 作为结果值,这样就可以进行链式的输出操作了。