变量类型
使用sizeof()
可以看到类型占用存储空间
类型 | 占用 |
---|---|
int | 4B(2B,3B) |
char | 1B |
short | 2B |
long | 4B |
long long | 8B |
float | 4B |
double | 6B |
对于char字符类型类型,内存中存储的是其对应的字符编码(如'A'为65),当其作为char类型被cout输出时输出字符变量,为int输出时为其对应的字符编码。这也是cout智能对象的例子。
C++中,字符变量用单引号包裹,字符串用多引号包裹
constant限定符
通过constant限定符指定的常量不能修改。应当在声明时定义,否则该常量值将不确定。
constant int Months = 12;
与#define的区别:
- constant可指定类型,define不行
- constant可通过作用域规则将定义限制在特定的函数或文件中
类型转换
以下情况将造成类型转换:
- 将一种算术类型的值赋给类一种算术类型的变量
- 表达式中包含不同的类型
- 将参数传递给函数
1. 初始化和赋值进行的转换
潜在的问题(精度缺失,数值异常)
若变量的类型无法表示赋给它的值,将导致没有定义的情况发生(数值异常)
2. 以{ }方式初始化时进行的转换(C++11)
这种初始化对类型转换的条件更加严格,列表初始化不允许缩窄(narrowing),即变量的类型可能无法表示赋给它的值。
例如不允许将浮点型转换为整型。在不同的整型之间转化或将整型转化为浮点型可能被允许,条件是编译器知道目标变量能够正确地存储赋给它的值。
对于c4,虽66能被char存储,但由于x为变量,之后可以被改变,编译器无法确定其是否能被char表示故invalid。
3. 表达式中的转换
C++程序在计算表达式时,会将整型转换成int计算(选择int计算速度可能最快),这称为整型提升。
对于不同类型进行算术计算时,转换如下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。