运算符示例

原文:https://www.studytonight.com/c/operators-in-c.php

C 语言支持一组丰富的内置运算符。运算符是一个符号,它告诉编译器根据提供给运算符的值执行某种数学或逻辑运算。

运算符在程序中用于操作数据和变量。

在继续使用 C 语言的运算符之前,我们建议您了解 C 变量和数据类型:

运算符

c 运算符可分为以下类型:

  • 算术运算符

  • 关系运算符

  • 逻辑运算符

  • 按位运算符

  • 赋值运算符

  • 条件运算符

  • 特殊运算符

让我们通过工作代码示例,一个接一个地了解这些运算符类型。

什么是操作数?

操作数是任何运算符都可以使用的值。例如,当我们说 4+5 时,这里,数字 45 是操作数,而 + 是运算符。

不同的运算符处理不同数量的操作数,就像+运算符需要两个操作数或值一样。

算术运算符

C 语言支持加法减法乘法除法等所有基本算术运算符。

下表显示了所有基本算术运算符及其说明。

| 运算符 | 描述 |

例子

(其中ab是具有某个整数值的变量)

| | --- | --- | --- | | + | 将两个操作数(值)相加 | a+b | | - | 从第一个操作数中减去第二个操作数 | a-b | | * | 将两个操作数相乘 | a*b | | / | 分子除以分母,即左边的操作数除以右边的操作数 | a/b | | % | 这是模运算 r,它返回两个操作数除法的余数作为结果 | a%b | | ++ | 这是增量运算符 -将整数值增加 1。该运算符只需要一个单操作数。 | a++++a | | -- | 这是递减运算符 -将整数值减少 1。该运算符只需要一个单操作数。 | --bb-- |

要了解算术运算符的执行顺序,请访问 C 运算符优先级

示例:基本算术运算符

让我们看一个代码示例来理解 C 程序中基本算术运算符的使用。

#include <stdio.h>

int main() {

    int a = 50, b = 23, result;

    // addition
    result = a+b;
    printf("Addition of a & b = %d \n",result);

    // subtraction
    result = a-b;
    printf("Subtraction of a & b = %d \n",result);

    // multiplication
    result = a*b;
    printf("Multiplication of a & b = %d \n",result);

    // division
    result = a/b;
    printf("Division of a & b = %d \n",result);

    return 0;

}

a 的加法&b = 73 a 的减法&b = 27 a 的乘法&b = 1150 a 的除法& b = 2

运行代码→

示例:使用模数运算符(%)

模数运算符在对提供的值进行除法运算后返回余数。

#include <stdio.h>

int main() {

   int a = 23, b = 20, result;

   // Using Modulus operator
   result = a%b;

   printf("result = %d",result);

   return 0;

}

结果= 3

运行代码→

示例:使用递增和递减运算符

递增运算符用于将任何数值的值增加 1,而递减运算符用于将任何数值的值减少 1。

#include <stdio.h>

int main() {

   int a = 10, b = 20, c, d;

   /* 
      Using increment operator
   */
   printf("Incrementing value of a = %d \n", ++a);

   /* 
      Using decrement operator
   */
   printf("Decrementing value of b = %d \n", --b);

   // first print value of a, then decrement a
   printf("Decrementing value of a = %d \n", a--);
   printf("Value of a = %d \n", a);

   // first print value of b, then increment b
   printf("Incrementing value of b = %d \n", b++);
   printf("Value of b = %d \n", b);

   return 0;

}

a = 11 的递增值 b = 19 的递减值 a = 11 的递减值 a = 10 的递增值 b = 19 的递增值 b = 20 的值

运行代码→

在上面的代码示例中,我们使用了增量运算符作为++ab++,而使用了减量运算符作为--ba--

当我们使用增量和减量操作符作为前缀(在操作数之前的意思),然后首先进行增量操作并使用该值,就像在前两个printf()函数中一样,我们得到了ab的更新值。

而当我们使用递增和递减运算符作为后缀(表示在操作数之后)时,则首先计算较大的表达式,在这种情况下为printf(),然后更新操作数的值。

关系运算符

关系运算符(或比较运算符)用于检查两个操作数之间的关系。检查两个操作数是否相等不相等小于大于等。

如果关系检查通过,则返回 1 ,否则返回 0

例如,如果我们有两个数字 14 和 7 ,如果我们说 14 大于 7 ,这是,因此该检查将返回 1 作为关系运算符的结果。另一方面,如果我们说 14 小于 7 ,这就是,因此会返回 0

下表显示了 C 语言支持的所有关系运算符。

| 运算符 | 描述 |

例子

(a``b,其中a = 10,b = 11)

| | --- | --- | --- | | == | 检查两个操作数是否相等 | a == b,返回 0 | | != | 检查两个操作数是否不相等。 | a != b,返回 1,因为a不等于b | | > | 检查左边的操作数是否大于右边的操作数 | a > b,返回 0 | | < | 左边的检查操作数小于右边的操作数 | a < b,返回 1 | | >= | 检查左操作数是否大于或等于右操作数 | a >= b,返回 0 | | <= | 检查左边的操作数是否小于或等于右边的操作数 | a <= b,返回 1 |

要了解关系运算符的执行顺序,请访问 C 运算符优先级

示例:关系运算符

当我们使用关系运算符时,那么根据比较的结果,如果是,那么输出就是 1 ,如果是,那么输出就是 0 。我们将在下面的例子中看到同样的情况。

#include <stdio.h>

int main() {

   int a = 10, b = 20, result;

   // Equal
   result = (a==b);
   printf("(a == b) = %d \n",result);

   // less than
   result = (a<b);
   printf("(a < b) = %d \n",result);

   // greater than
   result = (a>b);
   printf("(a > b) = %d \n",result);

   // less than equal to
   result = (a<=b);
   printf("(a <= b) = %d \n",result);

   return 0;

}

(a = = b)= 0 (ab)= 0 (a<= b)= 1

运行代码→

在上面的代码示例中,a有值 10b有值 20 ,然后对它们进行不同的比较。

在 C 语言中, true 是除零以外的任何值。而就是

逻辑运算符

C 语言支持以下 3 种逻辑运算符。

| 运算符 | 描述 |

例子

(a``b,其中a = 1,b = 0)

| | --- | --- | --- | | && | 逻辑“与” | a && b,返回 0 | | &#124;&#124; | 逻辑或 | a &#124;&#124; b,返回 1 | | ! | 逻辑非 | !a,返回 0 |

这些运算符用于执行逻辑运算,并与条件语句一起使用,如 C if-else 语句

  1. 对于运算符,只有当两个操作数都为真时,结果才为真

  2. 使用运算符,如果一个单操作数为真,则结果为真

  3. NOT 操作符变真为假变假为真

示例:逻辑运算符

在下面的代码示例中,我们使用了逻辑运算符。

#include <stdio.h>

int main() {

   int a = 1, b = 0, result;

   // And
   result = (a && b);
   printf("a && b = %d \n",result);

   // Or
   result = (a || b);
   printf("a || b = %d \n",result);

   // Not
   result = !a;
   printf("!a = %d \n",result);

   return 0;

}

(a&&b)= 0 (a | | b)= 1 (!a) = 0

运行代码→

C 语言中的按位运算符

按位运算符在位级别执行数据操作。这些运算符还执行从右向左的比特移位。按位运算符不适用于floatdoublelongdoublevoid等。(了解 C 浮点和双数据类型)。

下表包含按位运算符。C 语言中有 6 位运算符

运算符 描述 例子
& 按位“与”
&#124; 按位“或”
^ 按位异或(异或)
~ 补语
>> 右移
<< 左移位

按位“与”、“或”和“非”运算符的工作方式与逻辑“与”、“或”和“非”运算符相同,只是按位运算符一点一点地工作

下面我们有一个真值表**来展示这些操作符如何在不同的值下工作。

a b a & b a | b
Zero Zero Zero Zero Zero
Zero one Zero one one
one Zero Zero one one
one one one one Zero

按位运算符可以生成任意值。结果不是必须为 0 或 1。

逐位>><<运算符

按位移位运算符将位值向左或向右移位。左操作数指定要移位的,而右操作数指定该值中的位必须移位的位置数。两个操作数具有相同的优先级。

理解,比特如何从左向右移动,反之亦然。

a = 00010000
b = 2
a << b = 01000000 
a >> b = 00000100

a << b的情况下, 2 位00010000 中左移,另一个零加到另一端,也就是右边,因此该值变为 01000000

对于a >> b2 位从右侧移位,因此从右侧移除两个零,在左侧添加两个零,因此该值变为 00000100

请注意,移位不像旋转一样工作,这意味着移位的位不会在另一端添加。移位的位丢失

按位一补码(~)运算符

一的补码运算符会将操作数中的所有 1 更改为 0,并将所有 0 设置为 1。

例如,如果原始字节是 00101100 ,那么补码后就会变成 11010011

示例:按位左移和右移运算符

让我们看一个例子来理解 C 程序中的按位运算符。

#include <stdio.h>

int main() {

   int a = 0001000, b = 2, result;

   // <<
   result = a<<b;
   printf("a << b = %d \n",result);

   // >>
   result = a>>b;
   printf("a >> b = %d \n",result);

   return 0;

}

aT5】b = 128

运行代码→

赋值运算符

sssignation 运算符用于为变量赋值。例如,如果我们想要将值 10 赋给变量x,那么我们可以通过使用赋值运算符来实现,如:x = 10;这里,=(等于)运算符用于赋值。

在 C 语言中,=(等于)运算符是用于赋值的,然而它还有其他几个变体,如+=-=在一个语句中组合两个操作。

**您可以在下表中看到所有赋值运算符。

| 运算符 | 描述 |

例子

(ab是两个变量,其中 a=10,b=5)

| | --- | --- | --- | | = | 从右侧操作数向左侧操作数赋值 | a=ba取值 5 | | += | 将右操作数加到左操作数,并将结果赋给左操作数 | a+=b,与a=a+b相同,a值变为 15 | | -= | 从左操作数中减去右操作数,并将结果分配给左操作数 | a-=b,与a=a-b相同,a值变为 5 | | *= | 将左操作数与右操作数相乘,并将结果赋给左操作数 | a*=b,与a=a*b相同,a值变为 50 | | /= | 用右操作数除左操作数,并将结果分配给左操作数 | a/=b,与a=a/b相同,a的值变为 2 | | %= | 使用两个操作数计算模数,并将结果分配给左操作数 | a%=b,与a=a%b相同,a的值变为 0 |

当我们将算术运算符与赋值运算符=组合在一起时,我们得到了所有算术运算符的简写形式

示例:使用赋值运算符

下面我们有一个代码示例,其中我们使用了所有不同形式的赋值运算符,从基本赋值开始。

#include <stdio.h>

int main() {

   int a = 10;

   // Assign
   int result = a;
   printf("result = %d \n",result);

   // += operator
   result += a;
   printf("result = %d \n",result);

   // -= operator
   result -= a;
   printf("result = %d \n",result);

   // *= operator
   result *= a;
   printf("result = %d \n",result);

   return 0;

}

结果= 10 结果= 20 结果= 10 结果= 100

运行代码→

c 三元运算符(?)

三元运算符,在 C 语言中也称为条件运算符,可用于 if-then-else 形式的语句。

使用三元运算符的基本语法是:

(Expression1)? Expression2 : Expression3;

以下是它的工作原理:

  • 语法中的问号?代表 if 部分。

  • 第一个表达式(表达式 1)返回,基于此决定是执行(表达式 2)还是(表达式 3)

  • 如果(表达式 1)返回,则执行(表达式 2)。

  • 如果(表达式 1)返回,则执行:右侧的表达式,即(表达式 3)。

示例:使用三元运算符

下面是一个代码示例,演示如何使用三元运算符。

#include <stdio.h>

int main() {

   int a = 20, b = 20, result;

   /* Using ternary operator
      - If a == b then store a+b in result
      - otherwise store a-b in result
   */
   result = (a==b)?(a+b):(a-b);

   printf("result = %d",result);

   return 0;

}

结果= 40

运行代码→

c 特殊运算符- &*sizeof等。

除了算术、关系、逻辑、赋值等。运算符,C 语言使用一些其他运算符,例如:

  1. sizeof运算符

  2. &运算符

  3. *运算符

  4. .(点)和->(箭头)操作器

  5. []运算符等。

sizeof查找任意实体(变量、数组等)的大小。),&运算符查找一个变量的地址等。您可以在下表中看到此类运算符的列表。

运算符 描述 例子
sizeof 返回实体的大小(以字节为单位),例如变量或数组等。 sizeof(x)将返回变量的大小x
& 返回变量的内存地址 &x将返回变量x的地址
* 表示指向对象的指针。*运算符返回存储在存储器地址的值。 m = &x(变量x的内存地址)*m将返回存储在内存地址m的值
.(点)运算符 用于访问 C 结构C 联合的单个元素。 如果emp是包含元素int age的结构,那么emp.age将返回年龄值。
->(箭头)操作符 用于使用指向结构或联合的指针来访问结构或联合元素。 如果p是指向emp结构的指针,那么我们可以使用p->age访问age元素
[]运算符 用于使用索引访问数组元素 如果arr是一个数组,那么我们可以使用arr[index]来访问它的值,其中index代表从零开始的数组索引

在本教程系列中,我们将继续学习*、点运算符、箭头运算符和[]运算符,现在让我们看看如何使用sizeof&运算符。

示例:使用sizeof&运算符

下面是一个代码示例,尝试使用运行代码按钮在实时代码编译器中运行。

#include <stdio.h>

int main() {

   int a = 20;
   char b = 'B';
   double c = 17349494.249324;

   // sizeof operator
   printf("Size of a is: %d \n", sizeof(a));
   printf("Size of b is: %d \n", sizeof(b));
   printf("Size of c is: %d \n", sizeof(c));

   // & operator
   printf("Memory address of a: %d \n", &a);

   return 0;

}

a 的大小为:4 b 的大小为:1 c 的大小为:8 a 的内存地址:1684270284

运行代码→


常见问题

下面是一些 C 运算符的常见问题。

Q1。C 语言中的运算符是什么?

运算符是 C 编译器已知的符号,用于对数据执行操作。运算符可用于直接对某些值( C 字面值)或对 C 变量执行运算。在 C 语言中,我们可以执行算术运算、逻辑和关系运算、按位运算等。对数据使用 C 运算符。

Q2。C 支持哪些不同类型的运算符?

C 语言支持以下类型的运算符:

  • 算术运算符

  • 关系运算符

  • 逻辑运算符

  • 按位运算符

  • 赋值运算符

  • 三元算子

  • 特殊操作符如sizeof&*.(点)操作符、->(箭头)操作符、[](方括号)操作符等。

Q3。*运算符在 C 中做什么?

C 语言中的运算符是一元运算符,它返回位于地址的对象的值,该地址在`运算符之后指定。例如q = *m会将存储在内存地址m的值存储在q变量中,如果m`包含内存地址的话。

*运算符也用于执行两个值的乘法,在这里它充当算术运算符

Q4。!=在 C 中是什么意思?

是不等于(!=)运算符的符号,用于检查两个值是否相等。它是一个关系运算符,它的相反运算符是一个等号(==)运算符,用于检查两个值或变量之间的相等性。

如果两个值不相等,那么我们将得到 1 作为比较的结果。

Q5。C 中的&*运算符是什么?

两者都是特殊类型的运算符,用于执行与内存相关的操作。&运算符用于获取变量的地址,*运算符是&运算符的补码,用于获取位于内存地址的对象的值。

Q6。%d 在 C 语言中做什么?

它是格式说明符,用于将格式化输出打印到控制台。在 C 语言中,与printf()功能( C 输入输出一起使用,向控制台显示整数值。打印float,C 提供%f,对于char我们用%c,对于double我们用%lf等。


结论:

在本教程中,我们详细学习了所有的 C 语言操作符,并通过大量的代码示例来查看所有的操作符。