C++常量与运算符解析
常量
常量是程序中固定不变的值表达式。
字面量
字面量是直接在代码中表示特定值的常量表达式。
整数字面量
2000 // 十进制
0370 // 八进制
0x7d0 // 十六进制
整数字面量默认为int类型,可使用后缀改变类型:
42U // 无符号整型
100L // 长整型
2048ULL // 无符号长长整型
浮点数字面量
3.1416 // 标准表示
6.626e-34 // 科学计数法
2.0 // 带小数点的整数值
浮点字面量默认为double类型,后缀改变类型:
3.14f // 单精度浮点
1.414L // 扩展精度浮点
字符与字符串字面量
'A' // 字符
"Hello" // 字符串
"Multi" "line" // 拼接字符串
u8"UTF-8文本" // UTF-8编码
R"(原始\n字符串)" // 原始字面量
转义序列示例:
'\t' // 制表符
'\x21' // 十六进制ASCII值
其他字面量
bool valid = true; // 布尔真值
bool invalid = false; // 布尔假值
int* ptr = nullptr; // 空指针
类型化常量表达式
const float PI = 3.14159;
const char TAB = '\t';
int main() {
float radius = 3.0;
float area = PI * radius * radius;
cout << area << TAB;
}
预处理器宏定义
#define MAX_WIDTH 1024
#define LINE_BREAK '\n'
int main() {
int display = MAX_WIDTH - 100;
cout << display << LINE_BREAK;
}
运算符
赋值运算符
int val1, val2;
val1 = 15; // 直接赋值
val2 = val1; // 变量间赋值
int x = y = 10; // 链式赋值
算术运算符
int sum = 8 + 3; // 加法
int diff = 8 - 3; // 减法
int prod = 8 * 3; // 乘法
int quot = 8 / 3; // 除法
int rem = 8 % 3; // 取模
复合赋值运算符
int total = 10;
total += 5; // 等价 total = total + 5
total *= 2; // 等价 total = total * 2
自增与自减
int counter = 5;
int pre = ++counter; // 先增后赋值 → pre=6, counter=6
int post = counter--; // 先赋值后减 → post=6, counter=5
关系运算符
bool check1 = (10 > 8); // true
bool check2 = (5 == 3); // false
bool check3 = (7 >= 7); // true
逻辑运算符
bool cond1 = true && false; // AND → false
bool cond2 = true || false; // OR → true
bool cond3 = !true; // NOT → false
条件运算符
int max = (a > b) ? a : b; // 返回较大值
string msg = (score >= 60) ? "通过" : "未通过";
位运算符
unsigned flags = 0x0F;
flags &= 0xFE; // 位清除
flags |= 0x40; // 位设置
flags ^= 0x80; // 位翻转
flags <<= 2; // 左移2位
类型转换
double pi_val = 3.14159;
int approx = static_cast<int>(pi_val); // 显式转换 → 3
sizeof运算符
size_t int_size = sizeof(int); // 获取类型大小
double arr[10];
size_t arr_bytes = sizeof(arr); // 获取数组总字节数
运算符优先级
| 优先级 | 运算符 |
|---|---|
| 1 | :: (作用域解析) |
| 2 | () [] . -> ++ -- (后缀) |
| 3 | ++ -- (前缀) ~ ! + - (一元) & * sizeof |
| 4 | .* ->* (成员指针) |
| 5 | * / % (乘除模) |
| 6 | + - (加减) |
| 7 | << >> (位移) |
| 8 | < <= > >= (关系) |
| 9 | == != (相等) |
| 10 | & (位与) |
| 11 | ^ (位异或) |
| 12 | | (位或) |
| 13 | && (逻辑与) |
| 14 | || (逻辑或) |
| 15 | ?: (条件) = 复合赋值 |
| 16 | , (逗号) |