C++源文件通常以.cc、.cxx、.cpp、.cp、.C作为后缀来命名
C++语言未定义输入输出语句,而是提供了一个全面的标准库来提供IO机制,对应 iostream、fstream、sstream
std::cout<<"Enter Two Numbers"<<std::endl;,这条语句执行了一个表达式,在C++中,一个表达式产生一个计算结果,它由一个或多个运算对象和一个运算符组成
::为作用域运算符,std代表命名空间
C++注释:双斜线注释//,界定符注释/* */
控制流语句:while语句、for语句、if语句,在Unix系统中,Ctrl+D代表文件结束符
一般而言,C++类的作者决定了类类型对象上可以使用的所有操作
item1.isbn(),其中涉及到点运算符、调用运算符
术语:公共语法特征的实现细节
C++内置类型:整型、浮点型、布尔型、字符型、空类型
带符号类型和无符号类型:除去布尔型和扩展的字符型之外,其他整型可以划分为带符号的和无符号的两种。类型int、short、long和long long都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型,例如unsigned long。类型unsigned int 可以缩写为 unsigned。与其他整型不同,字符型被分为了三种,char、signed char、unsigned char。类型char实际上会表现为上述两种形式中的一种,具体是哪种由编译器决定。C++标准并没有规定带符号类型应如何表示,但是约定了在表示范围内正值和负值的量应该平衡,因此,8比特的signed char实际表示范围为-128至127
类型转换:对象的类型定义了对象能包含的数据和能参与的运算,其中一种运算被大多数类型支持,就是将对象从一种给定的类型转换为另一种相关类型
C++默认支持有损精度的类型转换,这方面Java会更严格一些,需要强转
在C++中,我们要尽量避免依赖于实现环境的行为,如果我们把int的尺寸看成是一个确定不变的已知值,那么这样的程序是不可移植的
含有无符号类型的表达式
不要给无符号对象赋一个负值,但是有一些隐含场景需要注意
- 无符号数和带符号的负值相加,带符号的负值会转换成无符号数;
- 从无符号数中减去一个值时,需要确保结果不能是一个负值,特别是用在循环判断的场景
- Java中不存在无符号类型
字面值常量
每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型
整型字面值:以0开头的整数代表八进制数,以0x或0X开头的代表十六进制,对应20、024、0x14,默认情况下,十进制字面值时带符号值,八进制和十六进制字面值即可能是带符号的也可能是无符号的。十进制字面值的类型时int、long、long long中尺寸最小的那个,前提是这种类型能容纳下当前的值。八进制和十六进制字面值的类型时能容纳其数值的int、unsigned int、long、unsigned long、long long、unsigned long long中的尺寸最小者。注意,类型short没有对应的字面值
浮点型字面值是一个double,字面值表现为一个小数或以科学计数法表示的指数,其中指数部分用E或e标识:3.14、3.14E0、0.、0e0、.001
字符和字符串字面值
由单引号括起来的一个字符称为char型字面值,双引号括起来的零个或多个字符则构成字符串型字面值。字符串字面值的类型实际上是由常量字符构成的数组,编译器在每个字符串的结尾处添加一个空字符(‘\0'),因此字符串字面值的实际长度要比它的内容多1。如果两个字符串字面值位置紧邻且由空格、缩紧和换行符分隔,则他们实际上是一个整体
转义序列
由两类字符程序员不能直接使用,需要转义:一类是不可打印的字符,一类是C++语言中有特殊含义的字符(单引号、双引号、问号、反斜线)。