运算符

C++中,运算符是用于执行算术、赋值等操作的符号。这篇笔记我们对运算符的使用进行简单的介绍。

算术运算符

算术运算符用于计算加减乘除、取模等运算。

算术运算符 说明 例子 计算结果
+ 1 + 2 3
- 1 - 2 -1
* 1 * 2 2
/ 2 / 1 2
% 取模 5 % 3 2
++ 前置递增 a = 2; b == ++a; a = 3; b = 3;
++ 后置递增 a = 2; b == a++; a = 3; b = 2;
-- 前置递减 a = 2; b == --a; a = 1; b = 1;
-- 后置递减 a = 2; b == a--; a = 1; b = 2;

下面例子演示了算术运算符的使用。

#include <iostream>

int main() {
    int a = 1;
    int b = 2;
    int sum = a + b;
    std::cout << sum << std::endl;
    return 0;
}

位运算符

位运算符主要用于二进制数据操作。

位运算符 说明 例子 计算结果
& 按位与 a = 0b1010; b = 0b1111; c = a & b; c = 0b1010;
| 按位或 | a = 0b1010; b = 0b1111; c = a b; c = 0b1111;
^ 按位异或 a = 0b1010; b = 0b1111; c = a ^ b; c = 0b0101;
~ 按位取反 a = 0b1010; b = ~a; b = 0b0101;
<< 左移 a = 0b1010; b = a << 1; b = 0b10100;
>> 右移 a = 0b1010; b = a >> 1; b = 0b101;

下面是一个使用位运算的例子,代码中我们使用了C++14引入的二进制字面量,它使用0b开头表示二进制整数,此外我们还使用了std::bitset<N>将整数转为了固定位的二进制字符串方便打印。

#include <iostream>
#include <bitset>

int main() {
    int a = 0b1010;
    int b = 0b1111;
    int c = a & b;
    std::cout << std::bitset<4>(c) << std::endl;
    return 0;
}

赋值运算符

赋值运算符用于将表达式的值赋予变量。

赋值运算符 说明 例子 计算结果
= 直接赋值 a = 2; a = 2;
+= 加等赋值 a = 2; a += 1; a = 3;
-= 减等赋值 a = 2; a -= 1; a = 1;
*= 乘等赋值 a = 2; a *= 2; a = 4;
/= 除等赋值 a = 2; a /= 2; a = 1;
%= 模等赋值 a = 3; a %= 2; a = 1;

下面例子演示了赋值运算符的使用。

#include <iostream>

int main() {
    int a = 1;
    a += 1;
    std::cout << a << std::endl;
    return 0;
}

比较运算符

比较运算符用于比较表达式并返回truefalse

比较运算符 说明 例子 计算结果
== 等于 1 == 2 false
!= 不等于 1 != 2 true
< 小于 1 < 2 true
> 大于 1 > 2 false
<= 小于等于 1 <= 2 true
>= 大于等于 1 >= 2 false

比较运算符常用于if语句的条件判断,下面例子演示了比较运算符的使用。

#include <iostream>

int main() {
    if (1 < 2) {
        std::cout << "true" << std::endl;
    }
    return 0;
}

逻辑运算符

逻辑运算符包含与、或、非3种。

逻辑运算符 说明 例子 计算结果
! a = true; b = !a; a = false;
&& a = true && false; a = false;
|| a = true || false; a = true;

下面例子演示了逻辑运算符的使用。

#include <iostream>

int main() {
    int a = 10;
    std::cout << (a < 20 && a % 2 == 0) << std::endl;
    return 0;
}

三目运算符

三目运算符其实是一种特殊的流程控制结构,它可以简化一些判断逻辑写法,下面是一个例子。

#include <iostream>

int main() {
    int a = 10;
    a < 20
        ? std::cout << "a is smaller than 20" << std::endl
        : std::cout << "a is bigger or equal than 20" << std::endl;
    return 0;
}

三目运算符的写法类似... ? ... : ...,程序会根据问号前面的表达式是true还是false来决定执行冒号前面的部分还是冒号后面的部分。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap