当前位置: 首页 > news >正文

C语言操作符详解

引言

 

C语言作为一种强大而灵活的编程语言,操作符是其重要组成部分。操作符用于执行各种运算,如算术运算、逻辑运算、比较运算等。深入理解C语言操作符,能帮助开发者编写出高效、准确的代码。

 

算术操作符

 

基本算术操作符

 

-  + (加法)、 - (减法)、 * (乘法)、 / (除法)、 % (取模)。例如:

int a = 10, b = 3;

int sum = a + b;

int product = a * b;

int quotient = a / b;

int remainder = a % b;

 

- 注意除法运算,当两个操作数都是整数时,结果为整数,会舍去小数部分。取模运算要求两个操作数都为整数。

自增自减操作符

 

-  ++ (自增)和 -- (自减)。分前置和后置两种情况:

int x = 5;

int y = ++x; // 前置自增,先自增再使用,x变为6,y为6

int z = x++; // 后置自增,先使用再自增,x变为7,z为6

 

 

比较操作符

 

常用比较操作符

 

-  > (大于)、 < (小于)、 >= (大于等于)、 <= (小于等于)、 == (等于)、 != (不等于)。这些操作符用于比较两个值的大小或判断是否相等,结果为布尔值(在C语言中用0表示假,非0表示真)。

int m = 10, n = 15;

if (m < n) {

    printf("m is less than n\n");

}

 

 

逻辑操作符

 

逻辑与、或、非

 

-  && (逻辑与)、 || (逻辑或)、 ! (逻辑非)。逻辑与只有当两个操作数都为真时结果才为真;逻辑或只要有一个操作数为真结果就为真;逻辑非用于取反操作数的真假值。

int p = 5, q = 10;

if ((p > 3) && (q < 15)) {

    printf("Both conditions are true\n");

}

 

 

位操作符

 

位与、或、异或、取反

 

-  & (位与)、 | (位或)、 ^ (位异或)、 ~ (位取反)。这些操作符用于对二进制位进行操作,在处理硬件相关编程或优化算法时非常有用。

int num1 = 5; // 二进制0101

int num2 = 3; // 二进制0011

int result1 = num1 & num2; // 位与结果为0001,即1

 

 

移位操作符

 

-  << (左移)、 >> (右移)。左移将二进制位向左移动指定的位数,右边补0;右移将二进制位向右移动指定的位数,左边补符号位(正数补0,负数补1)。

 

int num = 5; // 二进制0101

int shifted = num << 2; // 左移2位,结果为20,二进制10100

 

 

赋值操作符

 

简单赋值与复合赋值

 

-  = (赋值)是最基本的赋值操作符,用于将右边的值赋给左边的变量。还有复合赋值操作符,如 += 、 -= 、 *= 、 /= 、 %= 、 &= 、 |= 、 ^= 、 <<= 、 >>= 。

 

int a = 5;

a += 3; // 等价于a = a + 3,a变为8

 

 

其他操作符

 

条件操作符(三元操作符)

 

-  ? : ,形式为 expression1? expression2 : expression3 。如果 expression1 为真,返回 expression2 的值,否则返回 expression3 的值。

 

int x = 10, y = 5;

int max = (x > y)? x : y; // max为10

 

 

逗号操作符

-  , ,用于连接多个表达式,从左到右依次计算每个表达式的值,最后返回最右边表达式的值。

int result = (a = 5, b = 10, a + b); // result为15

 

 

操作符优先级与结合性

 

优先级

- 操作符优先级决定了表达式中不同操作符的计算顺序。例如,乘法和除法的优先级高于加法和减法。

结合性

- 当一个表达式中有多个优先级相同的操作符时,结合性决定了计算顺序。如赋值操作符是从右向左结合。

 

总结

 

C语言操作符种类繁多,功能强大。熟练掌握这些操作符,能使我们在编程过程中更加得心应手,编写出高质量的代码。无论是简单的数学计算,还是复杂的逻辑判断和位操作,操作符都发挥着关键作用。在实际编程中,要注意操作符的优先级和结合性,避免出现逻辑错误。

相关文章:

  • 蓝桥杯备赛 Day14 素数环
  • 【C++学习篇】C++11
  • AlmaLinux9.5安装samba实现与Windows文件共享 笔记250214
  • Spring Boot 常用依赖详解:如何选择和使用常用依赖
  • 20250213刷机飞凌的OK3588-C_Linux5.10.209+Qt5.15.10_用户资料_R1
  • Box Loss:目标检测中精准框定的秘密武器
  • 自动化测试基本流程
  • RabbitMQ解耦订单模块
  • 在 Android 中实现 H5 文件下载功能:跨版本文件存储机制解析
  • 使用数据库sqlite 筛选人脸信息
  • Tomcat添加到Windows系统服务中,服务名称带空格
  • FreeRTOS低功耗总结
  • 【进阶】JVM篇
  • Kernel之Tcpdump和Netfilter
  • CVE-2022-41352 漏洞分析与利用
  • 基于SpringBoot的在线交通服务管理系统
  • 持有无人机飞手执照,会组装调试维修入伍参军技术详解
  • 104、二叉树的最大深度
  • 同步buck型降压DCDC芯片外围电路详解
  • 一款利器提升 StarRocks 表结构设计效率
  • 报告:4月份新增发行的1763亿元专项债中,投向房地产相关领域约717亿元
  • 中日有关部门就日本水产品输华问题进行第三次谈判,外交部回应
  • 正荣地产:前4个月销售14.96亿元,控股股东已获委任联合清盘人
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • 特色业务多点开花,苏州银行擦亮金融为民底色
  • “高校领域突出问题系统整治”已启动,聚焦招生、基建、师德等重点