变量与基本类型

来源:互联网 发布:ubuntu 编译php 编辑:程序博客网 时间:2024/04/30 23:16

C++定义了一套包括算术类型和空类型在内的基本数据类型。

其中算术类型包含了字符,整型数,布尔值和浮点数。空类型不对应具体的值(具体应用不知)


内置类型的机器实现

计算机以比特序列存储数据,每个比特非0即1。

大多数计算机将内存中的每个字节与一个地址关联起来,例如:


736424 ----------0 0 1 1 1 0 1 1

736425 ----------0 0 0 1 1 0 1 1

736426 ----------0 1 1 1 0 0 0 1

736427 ----------0 1 1 0 0 1 0 0

  地址                   8比特内容


为了赋予内存中某个地址明确的含义,必须首先知道存储在该地址的数据的类型。类型决定了数据所占的比特数以及该如何解释这些比特内容。

同样的比特序列不同的数据类型表示不同的值!


如何选择类型?

为了使程序更准确,更快运行遵循以下准则:

当明确知晓数值不可能为负的时,选用无符号类型。


使用 int 执行整数运算。在实际应用中, short 常常显得太小, long 一般和 int 有一样的尺寸。如果数值超过了 int 的表示范围,选用 long long。


在算术表达式 中不要使用 char 或 bool,只有在存放字符或布尔值时才使用它们。因为类型 char 在一些机器上是有符号的,而在另一些机器上又是无符号的,

所以如果使用 char 进行运算特别容易出问题。如果你需要使用一个不大的证书,那么明确指定它的类型是 signed char 或者 unsigned char。


执行浮点数运算选用 double ,这是因为 float 通常精度不够而且双精度浮点数甚至比单精度还快。

long double 提供的精度一般情况下是没有必要的,况且它带来的运行是消耗也不容忽视。


变量的初始化:

变量在第一次使用的时候再定义它。

在C++语言中,初始化和赋值是两个完全不同的操作。

初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是吧对象的当前值擦除,而以一个新值来替代。


int units_sold = 0;int units_sold = {0};int units_sold{0};         //C++11 standard   列表初始化int units_sold(0);
Ps:

当用于内置类型的变量时,这种初始化形式有一个重要的特点:如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器会报错:

long double ld = 3.1415926536;int a{ld}, b = {ld};       //错误:转换未执行,因为存在丢失信息的危险int c(ld), d =ld;          //正确L转换执行,且确实丢失了部分值

默认初始化:、

如果是内置类型的变量未被显式初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0。

0 0
原创粉丝点击