📜  C / C++中的运算符

📅  最后修改于: 2021-05-04 13:17:20             🧑  作者: Mango

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

c = a + b;

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

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

  1. 算术运算符:这些运算符用于对操作数执行算术/数学运算。示例:(+,-,*,/,%,++,–)。算术运算运算符有两种类型:
    1. 一元运算符:与一个操作数一起操作或一起使用的运算符是一元运算运算符。例如:(++,–)
    2. 二进制运算符:与两个操作数运算或一起使用的运算符是二进制运算符。例如:(+,–,*,/)

    要详细了解算术运算符,请访问此链接。

  2. 关系运算符:这些运算符用于比较两个操作数的值。例如,检查一个操作数是否等于另一个操作数,一个操作数是否大于另一个操作数,等等。一些关系运算符是(==,> =,<=)。要详细了解这些运算符,请访问此链接。

  3. 逻辑运算符:逻辑运算符用于组合两个或多个条件/约束或补充所考虑的原始条件的评估。逻辑运算符是布尔值true或false。例如,当两个条件都满足时,在C或C++中‘&&’运算符表示的逻辑AND将返回true。否则,它返回false。因此,当a和b都为真(即非零)时,a && b将返回true。要详细了解不同的逻辑运算符,请访问此链接。
  4. 按位运算符:按位运算符用于对操作数执行位级运算。首先将运算符转换为位级,然后对操作数进行计算。诸如加法,减法,乘法等数学运算可在位级别执行,以加快处理速度。例如,用C或C++表示为&运算符按位AND将两个数字用作操作数,并对两个数字的每一位执行AND。仅当两个位均为1时,AND的结果才为1。要详细了解按位运算运算符,请访问此链接。
  5. 赋值运算符:赋值运算符用于将值分配给变量。赋值运算符的左侧操作数是一个变量,而赋值运算符的右侧操作数是一个值。右侧的值必须与左侧的变量的数据类型相同。否则编译器将引发错误。
    不同类型的赋值运算符如下所示:
    1. “ =” :这是最简单的赋值运算符。该运算符用于将右侧的值分配给左侧的变量。
      例如:
      a = 10;
      b = 20;
      ch = 'y';
      
    2. “ + =” :此运算符是’+’和’=’运算符。该运算符首先将左侧变量的当前值与右侧值相加,然后将结果分配给左侧变量。
      例子:
      (a += b) can be written as (a = a + b)
      

      如果存储在a中的初始值是5。那么(a + = 6)= 11。

    3. “-=” :此运算符是’-‘和’=’运算符。该运算符首先从左侧变量的当前值中减去右侧的值,然后将结果分配给左侧的变量。
      例子:
      (a -= b) can be written as (a = a - b)
      

      如果存储在a中的初始值是8,则(a-= 6)= 2。

    4. “ * =” :此运算符是’*’和’=’运算符。此运算符首先将左侧变量的当前值乘以右侧变量的值,然后将结果分配给左侧变量。
      例子:
      (a *= b) can be written as (a = a * b)
      

      如果最初存储在a中的值为5。则(a * = 6)= 30。

    5. “ / =” :此运算符是’/’和’=’运算符。该运算符首先将左侧变量的当前值除以右侧值,然后将结果分配给左侧变量。
      例子:
      (a /= b) can be written as (a = a / b)
      

      如果存储在a中的初始值是6。则(a / = 2)= 3。

  6. 其他运算符:除了上述运算符外,还有其他一些C或C++运算符可用于执行某些特定任务。这里讨论其中一些:
    1. sizeof运算符:sizeof在C / C++编程语言中被大量使用。它是一个编译时一元运算运算符,可用于计算其操作数的大小。 sizeof的结果是无符号整数类型,通常用size_t表示。基本上,sizeof运算符用于计算变量的大小。要详细了解sizeof运算符,您可以访问此链接。
    2. 逗号运算符:逗号运算符(用标记表示)是一个二进制运算符,它求值第一个操作数并丢弃结果,然后求值第二个操作数并返回该值(和类型)。逗号运算符的优先级是所有C运算符符中的最低。逗号既充当运算符,又充当分隔符。要详细了解逗号,请访问此链接。
    3. 条件运算符:条件运算符的形式为Expression1吗?表达式2:表达式3 。此处,表达式1是要评估的条件。如果condition(Expression1)为True ,则将执行并返回Expression2的结果;否则,如果condition(Expression1)为false ,则将执行并返回Expression3的结果。我们可以替换条件运算符对if..else语句的使用。要详细了解条件运算符,请访问此链接。

运算符优先级图

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

Operator Description Associativity
() Parentheses (function call) left-to-right
[] Brackets (array subscript)
. Member selection via object name
-> Member selection via pointer
++/– Postfix increment/decrement
++/– Prefix increment/decrement right-to-left
+/- Unary plus/minus
!~ Logical negation/bitwise complement
(type) Cast (convert value to temporary value of type)
* Dereference
& Address (of operand)
sizeof Determine size in bytes on this implementation
*,/,% Multiplication/division/modulus left-to-right
+/- Addition/subtraction left-to-right
<< , >> Bitwise shift left, Bitwise shift right left-to-right
< , <= Relational less than/less than or equal to left-to-right
> , >= Relational greater than/greater than or equal to left-to-right
== , != Relational is equal to/is not equal to left-to-right
& Bitwise AND left-to-right
^ Bitwise exclusive OR left-to-right
| Bitwise inclusive OR left-to-right
&& Logical AND left-to-right
|| Logical OR left-to-right
?: Ternary conditional right-to-left
= Assignment right-to-left
+= , -= Addition/subtraction assignment
*= , /= Multiplication/division assignment
%= , &= Modulus/bitwise AND assignment
^= , |= Bitwise exclusive/inclusive OR assignment
<>= Bitwise shift left/right assignment
, expression separator left-to-right