- 字符集
- 词法记号
- 关键字
- 标识符:字母数字下划线构成,字母下划线开头
- 文字????
- 操作符
- 分隔符
- 空白
- 基本数据类型
- 标准只规定相对大小顺序
- 一般用int,通常具有最高的处理效率
- char并没有规定默认情况下是有符号的还是无符号的,char, signed char, unsigned char 是三种不同的数据类型
- 每一种数据类型都包括了数据本身的属性以及对数据的操作,定义一个变量同时限定了对变量的操作
- 常量
- 直接使用符号(文字)表示的值
- 整型常量
- 十进制不能以0开头,八进制以0开头
- 八进制和十六进制形式的整型常量一般用来表示无符号整数,前面不应带正负号
- 后缀L表示长整型,后缀U表示无符号型
- 实型常量
- 指数形式,整数部分和小数部分可以省略其一,但不能都省略,如.123E-1,12.E2都是正确的,但不能写成E-3这种形式
- 默认double型
- 字符常量
- 一般字符'a',不可显示字符\n
- \nnn八进制形式 \xnnn十六进制形式
- 字符中的单引号要用转义序列表示
- 字符串常量
- 字符串中的双引号要用转义序列表示
- 末尾\0
- 字符'a'和字符串"a"内存是不同的
- 布尔常量
- 符号常量
- const
- 声明时必须赋初值,之后不能被赋值
- 变量
- 需要用名字标识的
- 变量的声明和定义
- 声明类型和定义
- 声明不一定引起内存分配,定义意味着给变量分配内存空间,变量名就是对内存单元的命名,多数情况下声明与定义同时进行
- 变量地址的内存位置,与变量定义的位置直接相关
- 没有字符串变量,字符串类存储字符串
- 变量的存储类型
- auto 存储类型:采用堆栈方式分配内存空间,属于暂时性存储,其存储空间可以被若干变量多次覆盖使用。
- reglster 存储类型:存放在通用寄存器中。
- extern 存储类型 z 在所有函数和程序段中都可引用。
- static 存储类型:在内存中是以固定地址存放的,在整个程序运行期间都有效。
- 运算符与表达式
- 算术
- %只能用于整型操作数,优先级与/相同
- i=1,i++表达式的结果为2,但是结果要被用来继续参与其他操作时情况不同
- 赋值
- 表达式的值为等号左边对象被赋值后的值
- <<= >>= &= ^= |=
- 逗号
- 表达式1,表达式2
- 先求解1,再求解2,最终结果为表达式2的值
- 逻辑
- 比较
- 优先级相同(较高) <(小于),<=(小于或等于) ,>(大于),>=(大于或等于),
- 优先级相同(较低〉 == (等于),!=(不等于)
- 逻辑
- 高 ——>低 ! (非) &&(与) ||(或)
- &&和||短路
- 运算效率
- 第二个操作数的运算与否,可能会使某些值发生变化,例如 (a==b)||(++c==1)
- 比较
- 条件
- 唯一的三元运算符?
- 表达式 l? 表达式 2: 表达式 3
- 表达式 1 必须是 bool 类型,表达式 2 , 3 可以是任何类型,且类型可以不同。
- 条件表达式的最终类型为 2 和 3 中较高的类型
- 条件表达式的执行顺序为:先求解表达式 1 。若表达式 1 的值为 true时,则求解表达式2 ,表达式 2 的值为最终结果;若表达式 1 的值为 false ,则求解表达式 3 ,表达式 3 的值为最终结果。
- 条件运算符优级高于赋值运算符,低于逻辑运算符。结合方向为自右向左。
- sizeof运算符
- 不对括号内的表达式本身求值
- 位运算
- 对数据按二进制位进行操作,操作数必须是整数
- 按位与&
- 将操作数中的若干位置0
- 取操作数中的若干位置
- 按位或|
- 将操作数中的若干位置1
- 按位异或^
- 将操作数中的若干指定位翻转,如果某位与0异或,结果是该位的原值,如果某位与1异或,结果与该位原来的值相反
- 按位取反~
- 单目运算符
- 移位
- 移位运算符左边的操作数是需要移位的数值,右边的操作数是左移或右移的位数。
- 左移是按照指定的位数将一个数的二进制值向左移位。左移后,低位补 0,移出的高位舍弃。
右移是按照指定的位数将一个数的二进制值向右移位。右移后,移出的低位舍弃。
如果是无符号数则高位补 0; 如果是有符号数,则高位补符号位或补 0
- 运算符优先级与结合性
- 混合运算时数据类型的转换
- 隐含转换
- 算术运算和关系运算:低类型转换为高类型
- 类型越高,范围越大,精度越高
- 低——>高 char short int unsigned long unsigned long float double
- 逻辑运算全部转换成bool型
- 赋值运算一律将右值转换为左值的类型
- 显式转换
- 类型说明符(表达式) //C++风格的显示转换符号
- (类型说明符)表达式 //C风格的显示转换符号
- const cast< 类型说明符:> (表达式)
- dynamic cast< 类型说明符:> (表达式)
- reinterpret cast< 类型说明符:> (表达式)
- static cast< 类型说明符:> (表达式)
- 显式转换可能是不安全的,高类型转换为低类型数据精度会受损
- 转换时暂时的,一次性的
- 隐含转换
- 算术
- 语句语句
- 没有赋值语句和函数调用语句,赋值与函数调用通过表达式实现
- 表达式可以作为另一个更复杂表达式的一部分,而表达式语句不能
C++语言程序设计(郑莉)02 C++基本数据类型和表达式
最新推荐文章于 2021-01-11 09:13:01 发布