概述
2.1 基本内置类型
C++中包括 算数类型(arithmetic type) 和 空类型(void) 的数据类型,其中,算数类型包括字符、整型数、布尔值和浮点数;空类型不对应具体的值,当函数不返回值时用void作为返回类型
2.1.1算数类型
对于数组或者字符串,a[i++] / a[i—]先执行 a[i] 在执行i++/ i —; 而a[++i] / a[—i] 先执行 i++/ i— 然后执行 a[i]
Unsigned 和 signed:
无符号:只有正数
有符号: 分为 正数和负数 范围为 -128~127
unsigned和signed转换:unsigned表示为 1111 1111,为255,转换为signed后,符号位1代表是负数(最高位为符号位),数值位转换成十进制后是127,按照补码的定义结果为-1;当signed转为unsigned时,最高位不表示符号位。
补码:
1、对于正数,补码与原码相同;
2、对于负数,数值位的绝对值取反后在最低位加1。PS:负数转整数也是取反后最低位加1(不是减1)
字面值常量
整型、浮点型:
以0 开头的为 八进制 : 024
以0x或者0X开头的为十六进制: 0x14
其他情况为十进制
字符型:
单引号括起来的为 char型字面值、双引号括起来的为 字符串型字面值
修改类型:
通过添加前后缀来改变字符类型
2.2 变量
2.2.1 变量定义
int:内置int 全局int默认初始化为0,函数体内的不被初始化 如果初始化会为 未定义的奇异值
string: 内置的string 无论是全局还是函数体内 默认初始化均为 空字符串
2.2.2 变量声明与定义
声明:将一个变量的名字让电脑知道 没有初始化 变量前+ 关键字 extern
定义:声明并初始化变量,需要申请存储空间
如果在函数体内初始化一个由extern 标记的变量会报错 变量可以多次声明但只能定义一次
2.3 复合类型
引用:引用类型的初始值必须是一个==对象且类型需要相同==
int 可以引用 double 类型(窄化操作)
2.3.2 指针
作用:获取对象的地址 (指针本身是对象)
指针值:对象的地址 类型要匹配
四种状态:
1.指向一个对象
2.指向邻近对象所占空间的下一个位置
3.空指针,即指针没有指向任何对象
4.无效指针,除以上3种外的情况
void* 指针,可以指向任何类型的对象的地址;一般用于指针比较、作为函数的输入或输出、赋值给另一个void*指针
引用与指针区别:
引用:绑定一个对象,必须在定义是赋值,本身不是对象;不能更换对象
指针:指向一个对象的地址,本身为对象,无须在定义时赋值;且允许进行赋值和拷贝;允许更换对象
判断指针是否合法:
将指针用if 进行判断
判断值的真实含义:
从右向左阅读定义,离得最近的为其类型
如:
2.4 const限定符
const 对象必须要初始化
若想在多个文件之间共享 const 对象,需要添加 extern关键字
普通指针只能指向普通常量,const 指针只能指向const常量 且 常量指针不能赋值
顶层const
顶层const 表示指针本身是常量;在进行拷贝时顶层const不受影响
底层const 表示指针指向的对象是常量
简单而言就是可以修改值的const为底层const,不能修改的为顶层const
//顶层const
int i = 0;
int *const p1 = &i; // 不能改变p1的值,为顶层const
const int ci = 42; // 不能改变ci的值,顶层const
const int *p2 = &ci; // 可以修改p2的值,底层const
const int *const p3 = p2; // 左侧的const 为底层,右侧的为顶层
const int &r = di; // 用于声明应用的const均为底层const
consterxpr变量:由编译器验证是否是一个常量表达式,且声明为consterxpr的变量一定是一个常量,必须用常量表达式进行初始化
2.5 处理类型
C++11 新特性:
别名声明
using SI = XXX; // SI 是XXX的同义词
auto 类型说明符:
编译器通过初始值来推断变量的类型,因此变量必须初始化
decltype类型指示符: 选择并返回操作数的数据类型:
decltype((variable)): 结果为引用;
decltype(variable) : 结果为变量,只有当variable为引用(表达式是引用)时,其结果才是引用
auto与decltypye 区别:
1.auto 根据变量的初始值来判断其类型;decltype 根据括号及括号内的内容判断
2.auto 有时候推断的结果和初始值类型不完全一样 会忽略掉顶层const 把底层const保留下来;而decltype则会保留顶层const
最后
以上就是明亮跳跳糖为你收集整理的【自学】C++Primer 变量和基本类型的全部内容,希望文章能够帮你解决【自学】C++Primer 变量和基本类型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复