一.符号常量
- 用一个符号名来代替一个常量,称为符号常量。
- 使用预处理命令#define 指定的
- #define 格式(宏定义命令)
-
- 简单的宏定义 #define <宏名> <字符串>
- 带参数的宏定义 #define <宏名> (<参数表>) <宏体>
- 符号常量是个名字,但它不是变量,在它的作用域内其值不能改变,也不能赋值。
二.常变量
- 在定义变量时,如果在前面加上关键字const,则变量的值在程序运行期间不能被改变,
- 格式
-
- const 类型说明符 变量名
- 注意:
-
- 在定义常变量时必须同时对变量进行初始化,此后它的值不能再改变,即不能给它赋值
- 在C标准中,const 定义的常量是全局的,但C++中视声明位置而定
- #define 和const的区别:
-
- const常量有数据类型,而宏变量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只能进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误,
- 有些集成化的调试工具可以对const常量进行调试,但不能对宏变量进行调试。
三.自增自减运算符
- 前缀运算是先变化后运算,后缀运算是先运算后变化。
四.关系运算符与表达式
- 关系运算符结合型均为左结合右,整体优先级低于算术运算符,高于赋值运算符
- 在C++中用数值1代表“真”,用0代表“假”
五.逻辑运算符与表达式
- 优先级(高到低)
-
- !(逻辑非)
- &&(逻辑与)
- ||(逻辑或)
- 对于逻辑与运算,如果第一个操作数被判断为假, 系统不再判断或求解第二操作数
- 对于逻辑非运算,如果第一个操作数被判断为真,系统不再判断或求解第二操作数
六.位运算符与表达式
- & | ^ ~ << >>
- 按位与(&)
-
- 按位与运算的作用是将两个操作数对应的每一位分别进行逻辑与运算
- 按位或(|)
-
- 按位或运算的作用是将两个操作数对应的每一位分别进行逻辑或运算
- 按位异或(^)
-
- 按位异或操作的作用是将两个操作数对应的每一位进行异或。
- 运算规则
-
- 若对应位相同,则该位的运算结果为0;若对应位不同,则该位的运算结果为1
- 按位取反(~)
-
- 按位取反是一个单目运算符,其作用是对一个二进制数的每一位取反
- 左移位(<<)
-
- 按照指定的位数将一个数的二进制值向左移位,左移后,低位(右边空位)补0,移出的高位(左边)舍弃
- 右移位(>>)
-
- 按照指定的位数将一个数的二进制值向右移位,右移后移出的低位舍弃,如果是无符号数则高位补零,如果是有符号数,则高位补符号位
七.SIZEOF运算符
- 返回指定的数据类型或表达式值的数据类型在内存中占用的字节数
- 两种形式
-
- sizeof(类型说明符)
-
- sizeof(char)
- sizeof(表达式)
-
- sizeof(66)
八.条件运算符
- C++中唯一的一个三目运算符,它能够实现简单的选择功能
- 格式:<表达式1>?<表达式2>:<表达式3>
九.逗号运算符
- 逗号运算符的优先级别最低,结合方向自左至右,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式
- 格式:
-
- 表达式1,表达式2,表达式3,……,表达式n
- 注意
-
- 计算一个逗号表达式的值时,从左至右依次计算各个表达式的值,最后计算的一个表达式的值和数据类型便是整个逗号表达式的值和类型
-
- x=2*5,x*4;
- 逗号表达式可以嵌套
十.表达式中的类型转换
- static_cast <类型说明符> (表达式)
-
- 用于一般表达式的类型转换
- reinterpret_cast <类型说明符> (表达式)
-
- 用于非标准的指针数据类型转换
- const_cast <类型说明符>( 表达式)
-
- 将const表达式转换成非常量类型,常用于将限制const成员函数const定义解除
- dynamic_cast <类型说明符>(表达式)
-
- 用于进行对象指针的类型转换