1、变量和基本类型

一、基本内置类型数组

      C++定义了一套包括算术类型(整型、字符、布尔型、浮点型)和空类型在内的基本数据类型。算术类型的尺寸,即所占比特数,在不一样机器上有所差异。函数

除了布尔型和扩展的字符型以外,整型划分为带符号的和无符号的unsigned。spa

      当在程序的某处使用了一种算术类型的值而其实所需的是另外一种类型的值时,编译器会执行类型转换。当表达式既有带符号类型又有无符号类型,当带对象

符号类型取值为负时会出现异常结果,由于带符号数会自动地转换成无符号数。作用域

     一个形如42的值被称做字面值常量,这样的值一望而知。都对应一种数据类型。short类型没有对应的字面值。十进制字面值的类型是int、long、long long字符串

中尺寸最小的那个,是带符号数。若是使用u、L做后缀,能够更改字面值的类型。浮点型字面值是double类型。'a'字符char型字面值。"hello"字符串型字面值编译器

(实际是常量字符构成的数组),编译器在每一个字符串的结尾处添加一个空字符('\0'),所以,字符串字面值的实际长度要比它的内容多1。若是字符串字面值位置string

紧邻且仅由空格、缩进和换行符分隔,其实是一个总体,能够分开书写。如 std::string str("hello" "world"); 是没有问题的。it

 

二、变量编译

     变量提供一个具名的、可供程序操做的存储空间。有类型,类型决定变量占用的空间、取值范围、能参与的运算。首先类型说明符,接着是由一个或多个

变量名组成的列表,变量名以逗号分隔,分号结束。如int a = 0,b;  

     当对象在建立时得到了一个特定值,咱们说这个对象被初始化了。一次定义了两个或多个变量时,对象的名字随着定义也就立刻可使用,因此,能够

用先定义的变量值去初始化后定义的其余变量。如 int a = 2, b = a * 3; 

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

     int units_sold = 0;

     int units_sold = {0};

     int units_sold{0};

     int units_sold(0);

     上面4条语句均可以将int变量初始化为0,用花括号来初始化变量的形式被称为列表初始化,使用列表初始化且初始值存在丢失信息的风险,编译器将

报错。如long double ld = 3.1415926536; int a = {ld}; //错误。

     若是定义变量时没有指定初值,则变量被默认初始化,默认值由变量类型决定,同时定义变量的位置也会起做用。内置类型的变量未显示初始化,它的

值由定义的位置决定,在函数体外的变量被初始化为0,在函数体内的变量将不被初始化,变量的值是未定义的。类的对象若是没有显示初始化,则其值

由类肯定。

     为了支持分离式变异,C++将声明和定义区分开来。声明使得名字为程序所知,一个文件若是想使用别处定义的名字则必须包含对那个名字的声明。

定义负责建立与名字关联的实体。声明规定了变量类型和名字,定义除此外还申请存储空间,也可能为变量赋初始值。想声明一个变量而非定义,如

声明i而非定义,extern int  i; 不能显式初始化变量,不然就变成定义了。

     变量能且只能被定义一次,可是能够被屡次声明。若是在多个文件中使用同一变量,变量定义必须出如今且只能出如今一个文件中,其余的文件必须

对其进行声明,不能重复定义。

     C++的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头,长度不限,对大小写敏感。自定义的标识符中不能连续用两个下划线,

也不能如下划线紧连大写字母开头,定义在函数体外的标识符不能如下划线开头。

     做用域是程序的一部分,在其中名字有其特定的含义。在不一样的做用域中可能指向不一样的实体。有效区域诗雨名字的声明语句,结束于所在做用

域末端。大多数做用域都以{ }分隔。全局做用域、块做用域。做用域也能够嵌套,分为内层做用域和外层做用域。::var,使用做用域操做符来覆盖默

认的做用域规则。

 

三、复合类型

     复合类型是指基于其余类型定义的类型。

相关文章
相关标签/搜索