九大运算符详解

目录

前言

一.算数运算符

1.1 算数运算符

1.2 算数运算案例

 二.关系运算符

2.1关系运算符

2.2 关系运算案例

三.逻辑运算符

3.1 逻辑运算符

3.2 逻辑运算案例

 四.位运算符

4.1 位运算符

4.2 位运算符案例

五.赋值运算符

5.1 赋值运算符

5.2 赋值运算符案例

六. 杂项运算符

6.1 杂项运算符

6.2 杂项运算符案例

七. 指针运算符

7.1 指针运算符

7.2 指针运算符案例

八.求字节数运算符

8.1 求字节数运算符

九.特殊运算符

9.1特殊运算符


前言

C语言中的运算符主要可以分为以下几种类型:

  1. 算术运算符:用于执行数学计算,如加法、减法、乘法和除法等。
  2. 关系运算符:用于比较两个值之间的关系,例如等于、不等于、大于、小于、大于等于和小于等于。
  3. 逻辑运算符:用于连接多个条件判断,包括逻辑与、逻辑或和逻辑非。
  4. 位运算符:用于按位操作整数类型的数据,如位与、位或、位异或、位取反以及移位运算符。
  5. 赋值运算符:用于给变量赋值,除了基本的赋值外,还包括复合赋值运算符,如加赋值、减赋值等。
  6. 杂项运算符:这一类包括了其他一些特殊的运算符,如条件运算符(三元运算符)、逗号运算符和 sizeof 运算符等。
  7. 指针运算符:包括取地址运算符和取内容运算符。
  8. 求字节数运算符:用于计算数据类型或对象所占用的内存大小。
  9. 特殊运算符:可能指的是一些不常见的或者是特定编译器支持的运算符。

这些运算符在编写C语言程序时起着至关重要的作用,它们使得程序员能够以更简洁的方式表达复杂的操作。了解和掌握这些运算符的使用是学习C语言的基础。

一.算数运算符

1.1 算数运算符

C语言中的算术运算符包括以下几种:

  1. 加法(+):用于两个数值的相加。
  2. 减法(-):用于两个数值的相减或者一个数值与负数的相加。
  3. 乘法(*):用于两个数值的相乘。
  4. 除法(/):用于两个数值的相除,结果为商。
  5. 取模(%):用于两个数值相除后的余数。
  6. 自增(++):用于将变量的值增加1,可以是前缀或后缀形式。
  7. 自减(--):用于将变量的值减少1,可以是前缀或后缀形式。

这些运算符是编程中进行数学计算的基础,它们可以单独使用,也可以与其他运算符结合使用,形成复杂的表达式。在编写程序时,了解它们的优先级和结合性是非常重要的,这有助于正确理解和计算表达式的结果。

1.2 算数运算案例

  1. 加法(+):用于两个数值的相加。
  2. 减法(-):用于两个数值的相减或者一个数值与负数的相加。
  3. 乘法(*):用于两个数值的相乘。
  4. 除法(/):用于两个数值的相除,结果为商。
  5. 取模(%):用于两个数值相除后的余数。
  6. 自增(++):用于将变量的值增加1,可以是前缀或后缀形式。
  7. 自减(--):用于将变量的值减少1,可以是前缀或后缀形式。
int a = 5;
int b = 3;
int sum = a + b; // sum 的值为 8


int a = 5;
int b = 3;
int difference = a - b; // difference 的值为 2


int a = 5;
int b = 3;
int product = a * b; // product 的值为 15

int a = 6;
int b = 3;
int quotient = a / b; // quotient 的值为 2

int a = 6;
int b = 3;
int remainder = a % b; // remainder 的值为 0


int a = 5;
++a; // a 的值变为 6

int a = 5;
a++; // a 的值变为 6


int a = 5;
--a; // a 的值变为 4

int a = 5;
a--; // a 的值变为 4

 二.关系运算符

2.1关系运算符

C语言中的关系运算符用于比较两个值之间的关系,包括以下几种:

  1. 等于(==):检查两个值是否相等。
  2. 不等于(!=):检查两个值是否不相等。
  3. 大于(>):检查左边的值是否大于右边的值。
  4. 小于(<):检查左边的值是否小于右边的值。
  5. 大于等于(>=):检查左边的值是否大于或等于右边的值。
  6. 小于等于(<=):检查左边的值是否小于或等于右边的值。

关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<<=>>=的优先级相同,高于==!=,而==!=的优先级相同。

在C语言中,关系运算符的结果通常用整数表示,其中1代表真(即表达式关系成立),0代表假(即表达式关系不成立)。例如,1 > 2的结果是0,因为1不大于2;而1 < 2的结果是1,因为1小于2。

这些关系运算符通常用于控制流程语句中,如if条件语句和循环语句中,以根据不同的条件执行不同的代码分支。通过组合这些关系运算符,可以构建复杂的条件表达式来满足程序逻辑的需求。

2.2 关系运算案例

  1. 等于(==):检查两个值是否相等。
  2. 不等于(!=):检查两个值是否不相等。
  3. 大于(>):检查左边的值是否大于右边的值。
  4. 小于(<):检查左边的值是否小于右边的值。
  5. 大于等于(>=):检查左边的值是否大于或等于右边的值。
  6. 小于等于(<=):检查左边的值是否小于或等于右边的值。
    int a = 5;
    int b = 3;
    int result = (a == b); // result 的值为 0,因为 5 不等于 3
    
    int a = 5;
    int b = 3;
    int result = (a != b); // result 的值为 1,因为 5 不等于 3
    
    int a = 5;
    int b = 3;
    int result = (a > b); // result 的值为 1,因为 5 大于 3
    
    int a = 5;
    int b = 3;
    int result = (a < b); // result 的值为 0,因为 5 不小于 3
    
    int a = 5;
    int b = 3;
    int result = (a >= b); // result 的值为 1,因为 5 大于或等于 3
    
    int a = 5;
    int b = 3;
    int result = (a <= b); // result 的值为 0,因为 5 不小于或等于 3
    

三.逻辑运算符

3.1 逻辑运算符

C语言中的逻辑运算符用于连接或反转条件表达式的真假值,主要包括以下几种:

  1. 逻辑与(&&):当两个操作数都为真时,结果为真;否则为假。具有短路特性,即如果第一个操作数为假,则不会计算第二个操作数。
  2. 逻辑或(||):当至少一个操作数为真时,结果为真;如果两个操作数都为假,则结果为假。同样具有短路特性,即如果第一个操作数为真,则不会计算第二个操作数。
  3. 逻辑非(!):用于反转操作数的逻辑状态,即真变假,假变真。

这些逻辑运算符通常用于构建复杂的条件表达式,可以简化if-else语句,使得程序代码更加简洁和高效。例如,使用逻辑与可以判断两个条件是否同时满足,而逻辑或则用于判断多个条件中是否有至少一个满足。逻辑非用于否定一个条件,常用于if语句中的条件取反。

在实际编程中,逻辑运算符的应用非常广泛,它们可以帮助程序员表达复杂的逻辑关系,是编写控制流程不可或缺的工具。了解并掌握这些逻辑运算符的使用对于学习C语言至关重要。

3.2 逻辑运算案例

  1. 逻辑与(&&)
  2. 逻辑或(||)
  3. 逻辑非(!)
    int a = 5;
    int b = 3;
    int result = (a > 2) && (b < 4); // result 的值为 1,因为 5 大于 2 且 3 小于 4
    
    int a = 5;
    int b = 3;
    int result = (a > 6) || (b < 4); // result 的值为 1,因为 5 不大于 6,但 3 小于 4
    
    int a = 5;
    int result = !(a > 2); // result 的值为 0,因为 5 大于 2,取反后为假
    

 四.位运算符

4.1 位运算符

C语言中的位运算符用于对二进制位进行操作,可以高效地完成诸如设置位、清除位、翻转位、检查位等操作。以下是C语言中主要的六种位运算符:

  1. 按位与(&):用于将两个数的对应位进行逻辑与操作。如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。它通常用于清零或屏蔽某些位。
  2. 按位或(|):用于将两个数的对应位进行逻辑或操作。如果两个相应的二进制位中至少有一个为1,则该位的结果值为1,否则为0。它通常用于设置某些位。
  3. 按位异或(^):用于将两个数的对应位进行逻辑异或操作。如果两个相应的二进制位相异(一个为1,一个为0),则该位的结果值为1,否则为0。它通常用于切换某些位的状态。
  4. 按位取反(~):这是一个单目运算符,用于将数的所有位取反。即1变为0,0变为1。
  5. 左移(<<):用于将数的位向左移动指定的位数。左移一位相当于将该数乘以2。
  6. 右移(>>):用于将数的位向右移动指定的位数。右移一位通常相当于将该数除以2。

需要注意的是,位运算符的操作数是按位进行计算的,不同于算术运算符的按值计算。在C语言中,位运算符的优先级高于逻辑运算符和算术运算符,但低于关系运算符。了解这些位运算符的使用可以帮助编写更高效的代码,特别是在处理底层硬件操作或进行优化时。

4.2 位运算符案例

  1. 按位与(&)
  2. 按位或(|)
  3. 按位异或(^)
  4. 按位取反(~)
  5. 左移(<<)
  6. 右移(>>)
    int a = 5; // 二进制表示为 0101
    int b = 3; // 二进制表示为 0011
    int result = (a & b); // result 的值为 1,因为 0101 & 0011 = 0001
    
    int a = 5; // 二进制表示为 0101
    int b = 3; // 二进制表示为 0011
    int result = (a | b); // result 的值为 7,因为 0101 | 0011 = 0111
    
    int a = 5; // 二进制表示为 0101
    int b = 3; // 二进制表示为 0011
    int result = (a ^ b); // result 的值为 6,因为 0101 ^ 0011 = 0110
    
    int a = 5; // 二进制表示为 0101
    int result = (~a); // result 的值为 -6,因为 ~0101 = 1010,即-6
    
    int a = 5; // 二进制表示为 0101
    int result = (a << 2); // result 的值为 20,因为 0101 << 2 = 10100,即20
    
    int a = 5; // 二进制表示为 0101
    int result = (a >> 2); // result 的值为 1,因为 0101 >> 2 = 0001,即1
    

五.赋值运算符

5.1 赋值运算符

C语言中的赋值运算符用于将一个值赋给变量。以下是C语言中主要的五种赋值运算符:

  1. 等于(=):用于将右侧的值赋给左侧的变量。例如,a = 5;表示将整数5赋给变量a。
  2. 加等于(+=):用于将右侧的值与左侧变量的当前值相加,并将结果赋给左侧变量。例如,a += 3;表示将整数3与变量a的当前值相加,并将结果赋给变量a。
  3. 减等于(-=):用于将右侧的值与左侧变量的当前值相减,并将结果赋给左侧变量。例如,a -= 2;表示将整数2从变量a的当前值中减去,并将结果赋给变量a。
  4. 乘等于(*=):用于将右侧的值与左侧变量的当前值相乘,并将结果赋给左侧变量。例如,a *= 4;表示将整数4与变量a的当前值相乘,并将结果赋给变量a。
  5. 除等于(/=):用于将右侧的值与左侧变量的当前值相除,并将结果赋给左侧变量。例如,a /= 2;表示将变量a的当前值除以整数2,并将结果赋给变量a。

这些赋值运算符通常用于给变量赋值或更新变量的值。在编写程序时,需要根据具体的需求选择合适的赋值运算符来构建表达式。同时,需要注意赋值运算符的优先级和结合性,以确保正确的计算顺序。

5.2 赋值运算符案例

  1. 等于(=)
  2. 加等于(+=)
  3. 减等于(-=)
  4. 乘等于(*=)
  5. 除等于(/=)
    int a;
    a = 5; // 将整数5赋给变量a
    
    int a = 5;
    a += 3; // 将整数3与变量a的当前值相加,并将结果赋给变量a,即a = a + 3
    
    int a = 5;
    a -= 2; // 将整数2从变量a的当前值中减去,并将结果赋给变量a,即a = a - 2
    
    int a = 5;
    a *= 4; // 将整数4与变量a的当前值相乘,并将结果赋给变量a,即a = a * 4
    
    int a = 10;
    a /= 2; // 将变量a的当前值除以整数2,并将结果赋给变量a,即a = a / 2
    

六. 杂项运算符

6.1 杂项运算符

C语言中的杂项运算符包括以下几种:

  1. 逗号(,):用于连接两个表达式,并返回最后一个表达式的值。例如,int result = (a = 5, b = 3);表示将整数5赋给变量a,将整数3赋给变量b,并将整数3赋给变量result。
  2. 条件运算符(?:):用于根据条件选择两个表达式中的一个进行计算。例如,int max = (a > b) ? a : b;表示如果a大于b,则将a赋给变量max,否则将b赋给变量max。
  3. sizeof运算符:用于获取数据类型或对象的大小(以字节为单位)。例如,sizeof(int)返回整数类型的大小,sizeof(array)返回数组的大小。
  4. 取地址运算符(&):用于获取变量的内存地址。例如,int *ptr = &a;表示将变量a的地址赋给指针变量ptr。
  5. 解引用运算符(*):用于获取指针指向的变量的值。例如,int value = *ptr;表示将指针ptr指向的变量的值赋给变量value。
  6. 类型转换运算符:用于将一个数据类型转换为另一个数据类型。例如,double d = (double)i;表示将整数i转换为双精度浮点数d。

这些杂项运算符在编程中具有重要的作用,可以帮助我们实现更复杂的逻辑和操作。在编写程序时,需要根据具体的需求选择合适的杂项运算符来构建表达式。同时,需要注意运算符的优先级和结合性,以确保正确的计算顺序。

6.2 杂项运算符案例

  1. 逗号(,)
  2. 条件运算符(?:)
  3. sizeof运算符
  4. 取地址运算符(&)
  5. 解引用运算符(*)
  6. 类型转换运算符
    int a = 5;
    int b = 3;
    int result = (a = 5, b = 3); // result 的值为 3,因为 a = 5 返回 5,b = 3 返回 3,所以逗号表达式的值为最后一个表达式的值
    
    
    int a = 5;
    int b = 3;
    int max = (a > b) ? a : b; // max 的值为 5,因为 a > b 为真,所以选择 a 作为结果
    
    
    int size = sizeof(int); // size 的值为 4,因为整数类型的大小为 4 字节
    
    
    int a = 5;
    int *ptr = &a; // ptr 指向变量 a 的内存地址
    
    
    int a = 5;
    int *ptr = &a;
    int value = *ptr; // value 的值为 5,因为指针 ptr 指向变量 a,所以解引用 ptr 得到变量 a 的值
    
    
    int i = 5;
    double d = (double)i; // d 的值为 5.0,因为将整数 i 转换为双精度浮点数 d
    
    

七. 指针运算符

7.1 指针运算符

C语言中的指针运算符用于对指针进行操作,包括以下几种:

  1. 取地址运算符(&):用于获取变量的内存地址。例如,int *ptr = &a;表示将变量a的地址赋给指针变量ptr。
  2. 解引用运算符(*):用于获取指针指向的变量的值。例如,int value = *ptr;表示将指针ptr指向的变量的值赋给变量value。
  3. 递增运算符(++)和递减运算符(--):用于改变指针的值。递增运算符使指针指向下一个存储单元,递减运算符使指针指向上一个存储单元。例如,ptr++;表示将指针ptr指向下一个存储单元,ptr--;表示将指针ptr指向上一个存储单元。
  4. 加法运算符(+)和减法运算符(-):用于计算指针与整数之间的差值。例如,ptr + 2;表示将指针ptr向后移动两个存储单元,ptr - 3;表示将指针ptr向前移动三个存储单元。

这些指针运算符在编程中具有重要的作用,可以帮助我们操作和管理内存。在编写程序时,需要根据具体的需求选择合适的指针运算符来构建表达式。同时,需要注意运算符的优先级和结合性,以确保正确的计算顺序。

7.2 指针运算符案例

  1. 取地址运算符(&)
  2. 解引用运算符(*)
  3. 递增运算符(++)和递减运算符(--)
  4. 加法运算符(+)和减法运算符(-)
    int a = 5;
    int *ptr = &a; // 将变量a的地址赋给指针变量ptr
    
    
    int a = 5;
    int *ptr = &a;
    int value = *ptr; // 将指针ptr指向的变量的值赋给变量value,即value的值为5
    
    
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr; // 将数组arr的首元素地址赋给指针变量ptr
    ptr++; // 将指针ptr指向下一个存储单元,即指向数组arr的第二个元素
    int value = *ptr; // 将指针ptr指向的变量的值赋给变量value,即value的值为2
    
    
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr; // 将数组arr的首元素地址赋给指针变量ptr
    int value = *(ptr + 2); // 将指针ptr向后移动两个存储单元,然后解引用得到该位置的值,即value的值为3
    

八.求字节数运算符

8.1 求字节数运算符

C语言中没有专门的求字节数运算符,但可以通过sizeof运算符来获取数据类型或对象的大小(以字节为单位)。例如:

int size = sizeof(int); // 获取整数类型的大小,即4字节

需要注意的是,sizeof运算符返回的是数据类型或对象的大小,而不是变量的值。如果要获取变量的字节数,可以使用sizeof运算符结合指针来实现。例如:

int a = 5;
int size = sizeof(a); // 获取变量a的字节数,即4字节

九.特殊运算符

9.1特殊运算符

C语言中的特殊运算符包括以下几种:

  1. 取地址运算符(&):用于获取变量的内存地址。例如,int *ptr = &a;表示将变量a的地址赋给指针变量ptr。
  2. 解引用运算符(*):用于获取指针指向的变量的值。例如,int value = *ptr;表示将指针ptr指向的变量的值赋给变量value。
  3. 类型转换运算符:用于将一个数据类型转换为另一个数据类型。例如,double d = (double)i;表示将整数i转换为双精度浮点数d。
  4. 条件运算符(?:):用于根据条件选择两个表达式中的一个进行计算。例如,int max = (a > b) ? a : b;表示如果a大于b,则将a赋给变量max,否则将b赋给变量max。
  5. 逗号(,):用于连接两个表达式,并返回最后一个表达式的值。例如,int result = (a = 5, b = 3);表示将整数5赋给变量a,将整数3赋给变量b,并将整数3赋给变量result。
  6. 位运算符:用于对二进制位进行操作。例如,int result = a & b;表示将变量a和变量b进行按位与操作,并将结果赋给变量result。
  7. 逻辑运算符:用于对真值进行操作。例如,int result = (a > 0) && (b < 0);表示如果a大于0且b小于0,则将真值1赋给变量result,否则将假值0赋给变量result。
  8. sizeof运算符:用于获取数据类型或对象的大小(以字节为单位)。例如,sizeof(int)返回整数类型的大小,sizeof(array)返回数组的大小。
  9. 取地址运算符(&):用于获取变量的内存地址。例如,int *ptr = &a;表示将变量a的地址赋给指针变量ptr。
  10. 解引用运算符(*):用于获取指针指向的变量的值。例如,int value = *ptr;表示将指针ptr指向的变量的值赋给变量value。

这些特殊运算符在编程中具有重要的作用,可以帮助我们实现更复杂的逻辑和操作。在编写程序时,需要根据具体的需求选择合适的特殊运算符来构建表达式。同时,需要注意运算符的优先级和结合性,以确保正确的计算顺序。

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锻炼²

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值