C / C++ 中的运算符

709 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

运算符是任何编程语言的基础。因此,如果不使用运算符,C/C++ 编程语言的功能是不完整的。我们可以将运算符定义为帮助我们对操作数执行特定数学和逻辑计算的符号。换句话说,我们可以说操作符操作操作数。 
例如,考虑以下语句: 

c = a + b;

这里,'+' 是称为加法运算符的运算符,'a' 和 'b' 是操作数。加法运算符告诉编译器将操作数 'a' 和 'b' 相加。

C/C++ 有很多内置的运算符类型,它们的分类如下: 

  1. 算术运算符:这些是用于对操作数执行算术/数学运算的运算符。示例:(+、-、*、/、%、++、–)。算术运算符有两种类型: 

    1. 一元运算符:操作或使用单个操作数的运算符是一元运算符。例如: (++ , –)
    2. 二元运算符:操作或使用两个操作数的运算符是二元运算符。例如: (+ , – , * , /)
  2. 关系运算符:它们用于比较两个操作数的值。例如,检查一个操作数是否等于另一个操作数,一个操作数是否大于另一个操作数等等。一些关系运算符是 (==, >= , <= )。

  3. 逻辑运算符:逻辑运算符用于组合两个或多个条件/约束或补充考虑的原始条件的评估。逻辑运算符的运算结果是一个布尔值,真或假。例如,当考虑的两个条件都满足时,在 C 或 C++ 中表示为 “&&”运算符逻辑 AND将返回 true。否则返回false。因此,当 a 和 b 都为真(即非零)时, a && b 返回真。

  4. 位运算符:位运算符用于对操作数执行位级操作。首先将运算符转换为位级,然后对操作数执行计算。加、减、乘等数学运算可以在位级执行,以加快处理速度。例如,在 C 或 C++ 中表示为 & 运算符按位 AND将两个数字作为操作数,并对两个数字的每一位执行 AND。仅当两个位都为 1 时,AND 的结果才为 1。

  5. 赋值运算符:赋值运算符用于为变量赋值。赋值运算符的左侧操作数是变量,赋值运算符的右侧操作数是值。右侧的值必须与左侧的变量具有相同的数据类型,否则编译器将引发错误。 
    不同类型的赋值运算符如下所示: 

    1. “=” :这是最简单的赋值运算符。此运算符用于将右侧的值分配给左侧的变量。 
      例如: 
a = 10;
b = 20;
ch = 'y';

  2. “+=” :此运算符是 '+' 和 '=' 运算符的组合。此运算符首先将左侧变量的当前值与右侧值相加,然后将结果赋给左侧变量。 
例子: 

(a += b) 可以写成 (a = a + b)
  1. 如果最初存储在 a 中的值为 5。那么 (a += 6) = 11。
  2. “-=” :该运算符是“-”和“=”运算符的组合。此运算符首先从左侧变量的当前值中减去右侧的值,然后将结果赋给左侧的变量。 \

例子: 

(a -= b) 可以写成 (a = a - b)
  1. 如果最初存储在 a 中的值为 8。则 (a -= 6) = 2。
  2. “*=” :此运算符是 '*' 和 '=' 运算符的组合。该运算符首先将左边变量的当前值乘以右边的值,然后将结果赋给左边的变量。 
    例子: 
(a *= b) 可以写成 (a = a * b)
  1. 如果存储在 a 中的初始值为 5。则 (a *= 6) = 30。
  2. “/=” :此运算符是 '/' 和 '=' 运算符的组合。该运算符首先将左边变量的当前值除以右边的值,然后将结果赋给左边的变量。 
    例子: 
(a /= b) 可以写成 (a = a / b)
  1. 如果最初存储在 a 中的值为 6。则 (a /= 2) = 3。

  2. 其他运算符:除了上述运算符,C 或 C++ 中还有一些其他运算符可用于执行某些特定任务。其中一些在这里讨论: 

    1. sizeof 运算符:sizeof 是 C/C++ 编程语言中经常使用的一种。它是一个编译时一元运算符,可用于计算其操作数的大小。sizeof 的结果是无符号整数类型,通常用 size_t 表示。基本上,sizeof 运算符用于计算变量的大小。要详细了解 sizeof 运算符,您可以访问此链接。
    2. 逗号运算符:逗号运算符(由标记 , 表示)是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。逗号运算符在所有 C 运算符中的优先级最低。逗号充当运算符和分隔符。要详细了解逗号,请访问此链接。
    3. 条件运算符:条件运算符的形式为Expression1 ? 表达式2:表达式3。这里,Expression1 是要评估的条件。如果条件(Expression1) 为真,那么我们将执行并返回表达式2 的结果,否则如果条件(表达式1) 为假,那么我们将执行并返回表达式3 的结果。我们可以用条件运算符代替 if..else 语句的使用。要详细了解条件运算符,请访问此链接。

运算符优先级图表

下表描述了 C/C++ 中运算符的优先顺序和结合性。运算符的优先级从上到下递减。 

优先级运算符描述关联性
1()括号(函数调用)左到右
[]括号(数组下标) 
.通过对象名称选择成员 
->通过指针选择成员 
++/–后缀递增/递减 
2++/–前缀递增/递减右到左
+/-一元加/减 
!~逻辑否定/按位补码 
(type)Cast(将值转换为类型的临时值) 
*取消引用 
&地址(操作数) 
sizeof确定此实现的大小(以字节为单位) 
3*,/,%乘法/除法/模数左到右
4+/-加法/减法左到右
5<< , >>按位左移,按位右移左到右
6< , <=关系小于/小于或等于左到右
> , >=关系大于/大于或等于左到右
7== , !=关系等于/不等于左到右
8&按位与左到右
9按位异或左到右
10一条竖杠按位或左到右
11&&逻辑与左到右
12两条竖杠逻辑或左到右
13?:三元条件右到左
14=任务右到左
+= , -=加法/减法赋值 
*= , /=乘法/除法赋值 
%= , &=模数/按位与赋值 
^= ,=按位异/包含 OR 赋值 
<>=按位左移/右移赋值 
15,表达式分隔符左到右