关于基础:C-Primer-Plus处理数据

变量类型

应用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. 表达式中的转换

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理