Z
ZHANK
入门基础

运算符

算术/关系/逻辑/位运算符、自增自减、优先级

运算符

C++ 运算符和 C 基本一致,但多了几个现代特性:static_cast、范围 for 循环中的 auto、位运算与枚举。

学完本章你将: 掌握算术/关系/逻辑/位运算符、自增自减、static_cast。


基本运算符

cpp
#include <iostream>

int main() {
    int a = 10, b = 3;

    std::cout << a + b  << "\n";  // 13
    std::cout << a - b  << "\n";  // 7
    std::cout << a * b  << "\n";  // 30
    std::cout << a / b  << "\n";  // 3  (整数除法)
    std::cout << a % b  << "\n";  // 1  (取余)

    // 类型转换:静态转换(C++ 推荐)
    double result = static_cast<double>(a) / b;  // 3.33333

    return 0;
}

自增自减 + 前置/后置

cpp
int a = 5;
int b = a++;   // b=5, a=6(先用后加)
int c = ++a;   // c=7, a=7(先加后用)

// 迭代器场景:前置 ++ 更高效(避免临时对象)
for (auto it = v.begin(); it != v.end(); ++it) { }  // 推荐

位运算符

cpp
int a = 0b0101;  // 5
int b = 0b0011;  // 3

a & b   // 1  按位与
a | b   // 7  按位或
a ^ b   // 6  按位异或
~a      // 按位取反
a << 1  // 10 左移
a >> 1  // 2  右移

static_cast —— C++ 类型转换

cpp
// C 风格(不推荐——不安全,编译器不检查)
int x = (int)3.14;

// C++ 风格(推荐——编译器检查合理性)
int y = static_cast<int>(3.14);

// 其他 cast
// dynamic_cast   —— 运行时检查的多态转换
// const_cast     —— 移除/添加 const
// reinterpret_cast —— 位级别的重新解释(最危险)

💡 永远优先使用 C++ 风格的类型转换——它们更显眼、更受编译器检查。