⚡ C++ 运算符进阶 - L5 基础概念

掌握高级运算符的使用技巧

📚 高级运算符概览

什么是高级运算符?

除了基本的算术、关系、逻辑运算符外,C++还提供了更便捷的运算符,让代码更简洁高效。

  • 自增自减运算符:++ 和 --
  • 复合赋值运算符:+=、-=、*= 等
  • 三目运算符:?:(条件运算符)
  • 位运算符:&、|、^、~、<<、>>

运算符分类

++ --
自增自减
+= -=
复合赋值
?:
三目运算
& | ^
位运算
#include <iostream> using namespace std; int main() { // 自增自减 int a = 10; a++; // a = 11 // 复合赋值 int b = 20; b += 5; // b = 25 // 三目运算符 int x = 10, y = 20; int max = (x > y) ? x : y; // max = 20 return 0; }

⚙️ 自增自减运算符

前置与后置的区别

#include <iostream> using namespace std; int main() { int a = 10; int b = 10; // 前置++:先加1,再使用 int c = ++a; // a = 11, c = 11 // 后置++:先使用,再加1 int d = b++; // d = 10, b = 11 cout << "a = " << a << ", c = " << c << endl; cout << "b = " << b << ", d = " << d << endl; return 0; }
💡 关键区别:
++a:先将a加1,然后返回新值
a++:先返回a的当前值,然后将a加1
• 单独使用时效果相同
• 在表达式中使用时有区别
🎮 互动实验:观察自增效果

输入初始值,观察前置++和后置++的区别

输入初始值后点击"执行测试"...

🛠️ 复合赋值运算符

常用的复合赋值运算符

#include <iostream> using namespace std; int main() { int x = 10; x += 5; // 等价于 x = x + 5,结果:15 x -= 3; // 等价于 x = x - 3,结果:12 x *= 2; // 等价于 x = x * 2,结果:24 x /= 4; // 等价于 x = x / 4,结果:6 x %= 4; // 等价于 x = x % 4,结果:2 cout << "最终结果:" << x << endl; return 0; }
💡 优势:
• 代码更简洁
• 执行效率略高
• 减少重复书写变量名
• 推荐使用这种写法
🧮 复合赋值计算器

选择运算符,查看计算过程和结果

设置参数后点击"计算"...

🚀 三目运算符与位运算

三目运算符(条件运算符)

三目运算符是唯一的三元运算符,可以简化if-else语句。

#include <iostream> using namespace std; int main() { int score = 85; // 传统if-else写法 string result1; if (score >= 60) { result1 = "及格"; } else { result1 = "不及格"; } // 三目运算符写法(更简洁) string result2 = (score >= 60) ? "及格" : "不及格"; // 求最大值 int a = 10, b = 20; int max = (a > b) ? a : b; // max = 20 cout << "result1: " << result1 << endl; cout << "result2: " << result2 << endl; cout << "max: " << max << endl; return 0; }

位运算符简介

位运算符直接对二进制位进行操作,效率高但较难理解。

#include <iostream> using namespace std; int main() { int a = 5; // 二进制:0101 int b = 3; // 二进制:0011 // 按位与 & int and_result = a & b; // 0101 & 0011 = 0001 = 1 // 按位或 | int or_result = a | b; // 0101 | 0011 = 0111 = 7 // 按位异或 ^ int xor_result = a ^ b; // 0101 ^ 0011 = 0110 = 6 // 左移 << int left_shift = a << 1; // 0101 << 1 = 1010 = 10(乘以2) // 右移 >> int right_shift = a >> 1; // 0101 >> 1 = 0010 = 2(除以2) cout << "a & b = " << and_result << endl; cout << "a | b = " << or_result << endl; cout << "a ^ b = " << xor_result << endl; cout << "a << 1 = " << left_shift << endl; cout << "a >> 1 = " << right_shift << endl; return 0; }
⚠️ 注意事项:
• 位运算只对整数有效
• 左移n位相当于乘以2的n次方
• 右移n位相当于除以2的n次方
• 实际应用中较少使用,了解即可

📝 实战练习

📝 小练习:运算符优先级

以下代码的输出结果是什么?

#include <iostream> using namespace std; int main() { int a = 5; int b = a++ + ++a; cout << b << endl; return 0; }
选择答案查看解析...
💻 编程挑战

题目:使用三目运算符判断一个数是奇数还是偶数。

输入数字后点击"生成代码"...