C++操作符替代名

C++还保留了一些词用作各种操作符的替代名。这些替代名用于支持某些不支持标准C++操作符号集的字符集。它们也不能用作标识符。

 

除了关键字,C++标准还保留了一组标识符用于标准库。标识符不能包含两个连续的下划线,也不能以下划线开头后面跟一个大写字母。有些标识符(在函数外定义的标识符)不能以下划线开头。

### C++ 中 `|` 操作符的含义和用法 #### 1. **按位或 (Bitwise OR)** 在 C++ 中,`|` 被称为按位或操作符。它作用于两个整数的操作数,在二进制级别逐位执行逻辑或运算。如果对应的两位中至少有一位为 1,则结果的该位也为 1;否则为 0。 例如: ```cpp #include <iostream> int main() { unsigned char a = 6; // 二进制形式:0110 unsigned char b = 3; // 二进制形式:0011 unsigned char result = a | b; std::cout << "Result of a | b: " << static_cast<int>(result) << std::endl; // 输出9 } ``` 在这个例子中,`a | b` 的计算过程如下: - `a`: 0110 - `b`: 0011 - 结果:0111(十进制为7) 此行为适用于任何支持按位操作的数据类型,如 `char`, `short`, `int`, `long` 等[^1]。 --- #### 2. **逻辑或 (Logical OR)** 虽然 `||` 是用于布尔表达式的逻辑或操作符,但在某些情况下,开发者可能会误以为 `|` 可以替代 `||` 来实现逻辑判断功能。然而需要注意的是,`|` 不会短路(short-circuit),即无论第一个条件是否已经决定了整个表达式的结果,第二个条件都会被评估。 示例代码展示两者的区别: ```cpp #include <iostream> using namespace std; bool func(bool val){ cout << "Function called with value: " << val << endl; return val; } int main(){ bool res1 = true | func(false); cout << "res1: " << res1 << endl; bool res2 = true || func(false); cout << "res2: " << res2 << endl; } ``` 运行以上程序可以看到当使用单竖线时即使左侧表达式已能决定最终结果右侧仍会被求值而双竖线不会这样工作因为一旦左边满足就不再继续检查右边部分从而提高效率减少不必要的计算开销[^2]. --- #### 3. **常见使用场景** ##### 场景一:设置标志位 在一个整型变量中存储多个独立状态的情况下,可以通过按位或来激活特定位置上的标志位。 ```cpp unsigned short flags = 0; // 初始化所有标志都关闭 flags |= (1 << 0); // 设置第0位为开启状态 flags |= (1 << 3); // 设置第3位为开启状态 // ... if(flags & (1<<3)){ cout<<"Third bit is ON"<<endl; }else{ cout<<"Third bit is OFF"<<endl; } ``` 此处 `(1<<n)` 表达了一个只有第 n 位设为1其余皆为零的数值因此利用这种技巧能够方便地操控各个单独比特而不影响其他部位的状态[^5]. ##### 场景二:组合枚举选项 假设存在一组互斥但又可能同时生效的选择项,可以借助按位或将其打包成单一参数传递给函数处理。 ```cpp enum Options { OPT_A=1, OPT_B=2, OPT_C=4 }; void applyOptions(unsigned optMask){ if(optMask & OPT_A){ /* Do something related to A */ } if(optMask & OPT_B){ /* Do another thing associated with B*/ } if(optMask & OPT_C){ /* Handle case involving C */ } } applyOptions(OPT_A | OPT_B); // 同时启用OPT_A和OPT_B的功能 ``` 这里展示了如何把不同常量通过简单的算术连接起来形成复合指令集以便后续解析调用更加灵活高效[^4]. --- ### 总结 综上所述,C++ 中的 `|` 主要作为按位或操作符发挥作用,既可用于基本数据类型的位级修改也可扩展到更复杂的编程模式当中去简化接口设计提升性能表现等等诸多方面均有所体现[^1][^2].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值