一个char的大小和一个机器字节一样,都是确保可以存放机器字符集中任意字符的数字值。
char因机器而异,其实会表现为 unsigned或signed中的一种。
当我们赋给一个无符号类型超出其表示范围的值时,结果是初始值对这个类型所能表示的最大值取模后的余数。
把一个负数转换为无符号数类似于直接给无符号数赋一个负值。
算术表达式的隐式转换:
char,short->int->unsigned->long->float->double。
有符号类型总是转换成同类型的无符号类型。
当我们赋给一个有符号类型超出其表示范围的值时,结果是未定义的。
算术类型:整型(包括字符、布尔类型)、浮点型(float、double)
空类型
double和float:
double和float都是有符号的。
一个小数等于 尾数 * 2 ^指数。
float的大小是32bit,其中首位是符号位,有8位指数位和23位尾数位,23位二进制可以表示的最大十进制数是7位,所以,float有7个有效位。
double的大小是64bit,其中首位是符号位,有11位指数位和52位尾数位,同理,double有16个有效位。
执行浮点数运算时,选用double,因为,double的精度更高,但计算代价却相差无几,甚至在某些机器上,double更好一些。
字面值常量:
布尔类型的字面值是true和false。
指针的字面值是nullptr。
单引号括起来的一个字符,是char型字面值。
双引号括起来的零个或多个字符是字符串型字面值。
字符串字面值其实是一个由常量字符构成的数组,编译器在每个字符串的结尾处添加一个空字符('\0')。
两个字符串字面值紧邻且仅由空格、缩进和换行符分隔,则他们实际上是一个整体。例如:
cout<<"aaaaaaa"
"bbbbbbb"<<endl;
在判断字面值的类型时,要确定是前缀还是后缀。
如果转义序列的\后面跟着的八进制数字超过三个,只有前三个数字和\构成转移序列。
本部分遗留问题:
两个字符串字面值紧邻且仅由空格、缩进和换行符分隔,则他们实际上是一个整体。
这两个字符串字面值是一个字符数组么?是以一个'\0'结尾么?