关于C语言操作符的那些事(超级全)

关于C语言操作符的那些事(超级全)

前言

C语言中操作符是非常重要的一部分,了解操作符的含义和使用方法可以帮助我们更好地理解和编写C语言程序。本文将介绍常见的C语言操作符,分为算术操作符、关系操作符、逻辑操作符、位操作符、赋值操作符、条件操作符和其他操作符七类。

算术操作符

算术操作符用于执行算术计算,包括加、减、乘、除、取模等。

  • 加号 +:用于加法运算
  • 减号 -:用于减法运算
  • 乘号 *:用于乘法运算
  • 除号 /:用于除法运算
  • 取模 %:用于求余数

C语言中的算术运算符具有优先级,可以使用圆括号改变优先级,例如:

int a = 2, b = 3, c = 4;
int res = (a + b) * c / 2;  // res的结果为10

关系操作符

关系操作符用于比较两个值的大小关系,返回布尔值(0或1)。

  • 相等 ==:用于比较两个值是否相等
  • 不等 !=:用于比较两个值是否不相等
  • 大于 >:用于比较左侧的值是否大于右侧的值
  • 小于 <:用于比较左侧的值是否小于右侧的值
  • 大于等于 >=:用于比较左侧的值是否大于等于右侧的值
  • 小于等于 <=:用于比较左侧的值是否小于等于右侧的值

例如:

int a = 2, b = 3;
int res = (a > b);  // res的结果为0

逻辑操作符

逻辑操作符用于连接两个布尔表达式,返回布尔值。

  • &&:当左右两个表达式都为真(非0)时返回1,否则返回0
  • ||:当左右两个表达式有一个为真(非0)时返回1,否则返回0
  • !:用于取反,当表达式为真时取反为假,为假时取反为真

例如:

int a = 2, b = 3;
int res = (a > 1 && b > 1);  // res的结果为1

位操作符

位操作符用于操作二进制数的每一位。

  • 按位与 &:当两个二进制位都为1时返回1,否则返回0
  • 按位或 |:当两个二进制位有一个为1时返回1,否则返回0
  • 按位异或 ^:当两个二进制位不同时返回1,否则返回0
  • 按位取反 ~:对每一个二进制位取反,0变为1,1变为0
  • 左移 <<:将左侧操作数的二进制数向左移动(低位补0),右侧操作数指定移动的位置
  • 右移 >>:将左侧操作数的二进制数向右移动(高位补0或1),右侧操作数指定移动的位置

例如:

unsigned int a = 0x18, b = 0x0F;
unsigned int res = a & b;  // res的结果为0x08

赋值操作符

赋值操作符用于将右侧的值赋给左侧的变量或内存单元。

  • =:将右侧的值赋给左侧的变量或内存单元
  • +=:将左侧的值加上右侧的值并赋给左侧的变量或内存单元
  • -=:将左侧的值减去右侧的值并赋给左侧的变量或内存单元
  • *=:将左侧的值乘上右侧的值并赋给左侧的变量或内存单元
  • /=:将左侧的值除以右侧的值并赋给左侧的变量或内存单元
  • %=:将左侧的值取模右侧的值并赋给左侧的变量或内存单元
  • <<=:将左侧的值左移右侧的位数并赋给左侧的变量或内存单元
  • >>=:将左侧的值右移右侧的位数并赋给左侧的变量或内存单元
  • &=:将左侧的值按位与右侧的值并赋给左侧的变量或内存单元
  • |=:将左侧的值按位或右侧的值并赋给左侧的变量或内存单元
  • ^=:将左侧的值按位异或右侧的值并赋给左侧的变量或内存单元

例如:

int a = 2, b = 3;
a += b;  // a的值为5

条件操作符

条件操作符用于根据条件选择不同的操作,也叫三目操作符。

  • expr1 ? expr2 : expr3:如果expr1为真(非0),返回expr2的值,否则返回expr3的值

例如:

int a = 2, b = 3;
int res = (a > b) ? a : b;  // res的值为3

其他操作符

除了以上的操作符,C语言还有其他一些常用的操作符。

  • &:取变量的地址
  • *:从地址中取出值,或者用来定义指针变量
  • sizeof:返回变量或类型的字节数
  • ++:自增,可以在前后两种位置使用
  • --:自减,可以在前后两种位置使用

例如:

int a = 2;
int *p = &a;  // 定义指向a的指针
int res = ++(*p);  // res的值为3,a的值也为3

总结

以上就是C语言操作符的主要内容,操作符在C语言编程中占据着重要位置,掌握对应的操作符可以帮助我们更好地编写高效、简洁、清晰的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于C语言操作符的那些事(超级全) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Python实现字典按key或者value进行排序操作示例【sorted】

    下面是Python实现字典按key或value进行排序的攻略: 1. 字典按key排序 如果你想按dict的key进行排序,可以使用Python的内置方法sorted()实现。下面是一个示例代码: d = {‘banana’: 3, ‘apple’: 4, ‘pear’: 1, ‘orange’: 2} sorted_dict = sorted(d.item…

    C 2023年5月23日
    00
  • 详解如何使用C++写一个线程安全的单例模式

    题目中要求讲解如何使用C++写一个线程安全的单例模式,因此我们需要对单例模式及线程安全等方面进行说明。 单例模式 单例模式是一种创建型设计模式,它保证某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式只需要一个类就可以完成所有的功能,这个类可以被系统中的任何一个对象使用。单例模式具有以下特点: 只有一个实例对象。 对外提供一个访问该实例对…

    C 2023年5月22日
    00
  • Redis教程(五):Set数据类型

    下面我将为你详细讲解一下“Redis教程(五):Set数据类型”的完整攻略。 一、Set数据类型的概述 Set(集合)时Redis支持的五种数据类型之一,是一个无序、无重复元素的集合。Set类型支持添加、删除和查询操作。Set中不支持重复元素,即每个元素都是唯一的。 二、Set数据类型的命令 1. SADD 用于向集合中添加元素,如果元素已经存在,则不执行任…

    C 2023年5月22日
    00
  • 整理Java编程中常用的基本描述符与运算符

    针对这个问题,我将分为以下三个部分进行详细讲解: 基本描述符 运算符 示例说明 1. 基本描述符 在Java编程中,基本描述符是指可以用来修饰变量的关键字,常用的基本描述符包括以下几种: final:表示变量是只读的,即变量的值在定义之后不能再次被修改。 abstract:表示类或方法是抽象的,即不能直接实例化对象或调用方法,需要被继承或实现后才能使用。 s…

    C 2023年5月22日
    00
  • 详解C语言面向对象编程中的封装

    详解C语言面向对象编程中的封装 1. 什么是封装 封装是指把一个抽象的数据类型里面的数据和操作数据的函数绑定在一起,形成一个不可分割的整体,用户只需要知道这个抽象数据类型提供的接口,而不必了解实现细节,从而提高了代码的可维护性和安全性。 在C语言中使用结构体来实现封装,即将数据和操作数据的函数集合在一起,封装起来。 2. 如何实现封装 首先需要声明结构体类型…

    C 2023年5月22日
    00
  • C++11如何引入的尾置返回类型

    C++11 引入了尾置返回类型(trailing return type)来增强类型推导的能力。尾置返回类型是一种特殊的语法形式,可用于在函数定义中指定函数返回类型。尾置返回类型的语法形式是在函数形参列表之后使用箭头(->),后跟将函数返回类型所需的任何内容。 尾置返回类型是在编译时确定的,因此使用尾置返回类型可以提高代码的可读性和可维护性,例如可以维…

    C 2023年5月23日
    00
  • 如何快速辨别USB Type-C数据线的好与坏?

    当购买USB Type-C数据线时,要注意以下几点: 步骤一:看外观 数据线的外观可以直接反映其质量。一般而言,好的USB Type-C数据线的线材会采用高质量的材料,比如高纯度铜线或高密度尼龙编织线,手感较为舒适,并且线料表面会进行人性化的设计,如添加防滑纹路。此外,好的USB Type-C数据线会采用高质量的接头,面料通常会采用金属材质,防止耐用性下降。…

    C 2023年5月23日
    00
  • 配置iptables实现本地端口转发的方法详解

    下面是关于配置iptables实现本地端口转发的方法详解,包含两条示例说明: 一、什么是iptables iptables是Linux系统中基于网络包过滤的软件,它可以管理网络连接,实现网络包的过滤、NAT、端口转发、防火墙等功能,非常常用。 二、本地端口转发 本地端口转发是指将客户端请求的某个端口转发到本机的另一个端口,或者将本机请求的某个端口转发到远程机…

    C 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部