1 简单变量
C++内置类型:
基本类型/算术类型:整型(bool、char、wchar_t、符号整型(signed char、 short、 int、long、long long)、无符号整型(unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long)、char16_t,char32_t)、浮点型(float、double、long double)
复合类型:数组、字符串、指针和结构
标识数据的方法:
使用&运算符检索变量名的内存地址。
使用指针标识。
变量名:
区分大小写
一个下划线开头的名称被保留给实现,用作全局标识符
变量命名和函数命名一样
整型:
最小长度:
char 8位; short 16位; int 16位; long 32位; long long 64位;
有无符号;
sizeof返回类型或者变量的长度,单位为字节
头文件climits中包含了整数限制的信息:最大取值,字节位数
预处理编译命令:#define 和 #include 一样
为提高可移植性,int可用long
climits中的符号常量
无符号类型:
short:[0,65535]
默认是有符号
signed MAX_SHORT + 1 = signed MIN_SHORT
unsigned MIN_SHORT - 1 = unsigned MAX_SHORT
整数溢出
整型字面值:
十进制
十六进制:常用来表示内存地址,而内存地址没有符号
八进制
注意:endl为控制符;其他控制符:dec、hex、oct;标识符hex位于名称空间std中;
防止溢出:使用long或者long long
char类型:
存储字符
cout会自动识别数据类型,是智能对象的一个例子。
成员函数cout.put():
类ostream;cout对象;put()成员函数;
转义序列的编码:
通用字符名的用法类似于转义序列:
以\u(后接8个十六进制位)或者\U(后接16个十六进制位)开头。
处理日文汉字系统:
1是编译器厂商可以将char定义为一个16位的字节或更长的字节。
2是wchar_t(宽字符类型)可以表示扩展字符集。
其中,wcin和wcout可以处理wchar_t流
C++11中新增:
char16_t:无符号,16位,前缀u表示字符常量和字符串常量
char32_t:无符号,32位,前缀U表示常
都有底层类型-内置的整型。
bool类型:
bool类型可以转换为int类型,也可以将数字值或者指针值转换为bool值。
2 const限定符
名称的首字母大写,以提醒该名称是常量;
另一种是以字母k开头;
如果在声明常量时没有提供值,则该常量的值不确定,且无法修改。
#define创建常量时可以将整个名称都大写;const相对于#define的好处:可以指定类型,作用域可以为特定函数中。
3 浮点数
能够表示带小数部分的数字;提供的值范围更大,可以表示整数之间的值;使用缩放因子移动小数点的位置;
浮点数的表示方法:
1是使用小数点。
2是使用E表示法。适合非常大和非常小的数。指数为负数时,除以10的乘方。
E表示法
浮点类型:
3种:float,double,long double;
至少有效位数要求:32位, 48位, ==long double;
通常:32位,64位,80/96/128位;
指数范围至少:[-37,37]
通常:cout会删除结尾的零,而cout.setf()会覆盖这种行为;
cout.setf()迫使输出使用定点表示法,以便更好地了解精度,防止程序把较大的值切换为表示法,并使程序显示到小数点后6位。
float类型只能表示数字中的前6位(四舍五入后的有效位,保证精度下的正确值)或者前7位,后面的数发生改变时不影响值。
浮点常量:
系统默认将浮点数存为double类型,若使用float时,使用f或者F后缀;使用long double时,使用l或L后缀;
优缺点:
优点:表示整数之间的值;缩放因子可以使表示的范围大得多;
缺点:运算速度通常整数运算慢,且精度降低;
4 算术运算符
优先级和结合性
除法:
各种除法
类型转换:
潜在的数值转换问题:
以{}初始化时转化:
常用于给复杂的数据类型提供值列表,条件是编译器知道目标变量能正确地存储赋给它的值;
非常量不允许转换;
表达式中转换:
C++11的校验表,编译器将以此查阅该列表:
传递参数时转换
强制类型转换
通用格式:(typeName) value;
typeName(value):类似于函数调用