C语言操作符详解

embedded/2025/2/13 9:04:35/

引言

 

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


http://www.ppmy.cn/embedded/161834.html

相关文章

社区版IDEA中配置TomCat(详细版)

文章目录 1、下载Smart TomCat2、配置TomCat3、运行代码 1、下载Smart TomCat 由于小编的是社区版&#xff0c;没有自带的tomcat server&#xff0c;所以在设置的插件里面搜索&#xff0c;安装第一个&#xff08;注意&#xff1a;安装时一定要关闭外网&#xff0c;小编因为这个…

java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql: -- 创建 School 表 CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId) );CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p…

笔记5——元组tuple

元组tuple tuple:一系列按特定顺序排列的元素组成 使用小括号 () 定义&#xff0c;元素之间用 , 隔开 my_tuple (I,love,endless,money) print(my_tuple)特点 不可变 &#xff1a;一旦创建&#xff0c;元组里的元素就不能被修改、添加或删除 可包含任意数据类型 有序性…

《Python百炼成仙》11-20章(不定时跟新)

第十一章 条件渡劫if-else问心 武当金顶的云海翻涌着二进制雪暴&#xff0c;七十二峰化作擎天而立的布尔冰柱。叶军踩着《周易》残页跃上紫霄宫檐角&#xff0c;看见薛香被冰封在水晶般的条件表达式中心&#xff1a; if 道心澄澈:破妄剑意 100else:心魔熵值 * 2楔子三元寒渊 …

对JVM的错误理解与纠正

从程序的角度我来整理一下&#xff0c;先是程序有通过 类加载器 加载字节码到JVM&#xff0c;然后初始化变量&#xff0c;通过执行引擎开始运行&#xff0c;在方法中放的是方法、类和静态变量和常量&#xff0c;然后cpu从方法区获取指令&#xff0c;然后从栈桢 的局部变量中获取…

1.2计算机硬件的基本组成

一、冯诺依曼机 1、冯诺依曼首次提出存储程序的概念 ①存储程序&#xff1a;将指令以二进制的形式事先输入计算机的主存储器&#xff0c;然后按照存储器中程序的首地址执行程序的第一条指令&#xff0c;以后就按该程序的规则顺序执行指令&#xff0c;直到程序结束。 ②第一台…

3. CSS中@scope

说说你对 CSS 中scope 的了解 <style>/* scope规则 */scope (#app) {.box {width: 100px;height: 100px;background-color: red;}} </style> <div id"app"><div class"box"></div> </div>CSS 中的scope 是一个相对较新…

PH热榜 | 2025-02-10

1. 2pr 标语&#xff1a;人工智能帮你把想法变成LinkedIn爆款 或者更口语化一点&#xff1a; AI帮你把点子变成LinkedIn上的热门帖子 介绍&#xff1a;用AI主持的访谈&#xff0c;把你的想法变成LinkedIn爆款帖子。录制你的想法&#xff0c;让AI帮你创作个性化、引人入胜的…