您现在的位置是:亿华云 > IT科技类资讯
C语言零基础教程之运算符和表达式,全面解析,轻松上手
亿华云2025-10-03 20:24:56【IT科技类资讯】4人已围观
简介运算符和表达式运算符:运算符用于执行程序代码运算,会针对一个以上操作数来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”操作数:是运算符作用于的实体,操作数指出指令执行的操作所需要数据的来
运算符和表达式
运算符:运算符用于执行程序代码运算,语言零会针对一个以上操作数来进行运算。基础教程解析例如:2+3,算符上手其操作数是和表2和3,而运算符则是达式“+”
操作数:是运算符作用于的实体,操作数指出指令执行的全面轻松操作所需要数据的来源。
表达式:是语言零由数字、运算符、基础教程解析数字分组符号(括号)、算符上手自由变量等以能求得数值的和表有意义排列方法所得的组合。
表达式书写规则
1,达式运算符不能相邻。全面轻松例a+-b是语言零错误的
2,乘号不能省略。基础教程解析列x乘以y,算符上手应写成x*y,而不是xy
3,可用多层括号表示运算次序,括号必须成对出现,均使用小括号。
运算符优先级和结合性
所谓优先级就是当一个表达式中有多个运算符时,云服务器提供商先计算谁,后计算谁。这个其实我们在小学学算术的时候就学过,如1+4÷2
那么“结合性”是什么呢?优先级都是关于优先级不同的运算符参与运算时先计算谁后计算谁。但是如果运算符的优先级相同,那么先计算谁后计算谁呢?这个就是由“结合性”决定的。
比如1+2×3÷4,乘和除的优先级相同,但是计算的时候是从左往右,即先计算乘再计算除,所以乘和除的结合性就是从左往右。就是这么简单!
运算符分类
按所需操作数分类:
单目运算符 双目运算符 三目运算符按作用分类:
算术运算符
单目正负不会改变操作数的值。 int num = 10;
-num;//表达式的值为-10 num还是为10
整数相除会向下取整。 5/2 == 2
5/2.0 == 2.5
取模运算只针对整数。 5%2 == 1
5.2%2//语法错误
赋值运算符
将一个数据(常量或表达式)赋值给一个变量。网站模板 int age =18;
age +=2;//age = age +2;
age +=5-3;//age = age+(5-3);
关系运算符
逻辑运算符
短路现象
在由&&和||运算符组成的逻辑表达式中,C语言有个“节省计算”原则,当计算出一个子表达式的云南idc服务商值后便可确定整个逻辑表达式的值时,后面的子表达式就不需要再计算了,这种表达式也称为短路表达式。
举个例子:
false && printf("1\n"); true && printf("2\n"); false || printf("3\n"); true || printf("4\n"); //output :2 // 3对于&&符号,如果左边表达式为false,则右边表达式不会执行,即不会执行printf(“1”),如果左边表达式为true,则右边表达式会执行,即会执行printf(“2”),输出2
对于||符号,如果左边为true,则右边表达式不会执行,即不会执行printf("4"),如果左边表达式为false,则右边表达式会执行,即执行printf("3"),输出3。
特殊运算符
特殊算术运算符
逗号运算符
用逗号将多个表达式连接起来,又称为“顺序求值运算符”。整个表达式的值是最后那个逗号之后表达式的值。
逗号表达式两种作用:
分割: int a,b,c,d; 求值: int a = (1,3,5,7,9);int b = 1,3,5,7,9;
条件表达式
条件表达式可以对指定的条件进行判断,true和false分别执行不同的代码。
条件 ?表达式1 :表达式2
printf(5 > 0 ? "正数" : "负数"); printf((5 > 0) ? ("正数") : ("负数"));//为了避免眼花缭乱,可以把每个表达式都加上圆括号位运算符
按位与&
这个符号其实和逻辑与运算 && 意思一样,只不过作用在每一位上。
有0则0:对于每一位来说,两个数都是真,则为真,否则为假。
3-> 0b 0000 0011 2-> 0b 0000 0010 3&2 ->0b 0000 0010按位或|
同理,和逻辑或运算 || 意思一样,只不过作用在每一位上。
有1则1:对于每一位来说,但凡有个真的就是真,否则为假。
3-> 0b 0000 0011 2-> 0b 0000 0010 3|2 ->0b 0000 0011按位异或^
相同为0,不同为1:对于每一位来说,只要相同就为0,不同就为1。
3-> 0b 0000 0011 2-> 0b 0000 0010 3^2 ->0b 0000 0001按位取反
取反是一个单目运算符,对每一位进行取反,即0变1,1变0
6-> 0b 0000 0110 ~6-> 0b 1111 1001 //补码:最高位变成了符号位,所以结果肯定是一个负数 0b 1000 0110 //反码 0b 1000 0111 //原码 result: -7左移
左移操作就是把这些0啊1啊的整体往左移动 n 位,右边缺的就补充 0。
3-> 0b 0000 0011 3<<1 -> 0b 0000 0110 ==6 2-> 0b 0000 0010 2<<2 0b 0000 1000 == 8诶,大家发现没有,左移 1 位之后这个数相当于乘2。
但是这只适用于左边溢出的高位中不包含 1 时。
如果把 1 扔了,那就肯定不是 2 倍了嘛。
右移
右移操作就是整体往右移动 n 位,左边缺的补充符号位。
3-> 0b 0000 0011 3>>1 -> 0b 0000 0001 ==1 2-> 0b 0000 0010 2<<2 0b 0000 0001 == 1同理,正数右移操作的效果是这个数除以 2。
最后
好了,C语言运算符和表达式就介绍到这里,大家可以先练习一下,后面介绍复杂的示例。
很赞哦!(37264)
相关文章
- 个人域名转为公司需要什么条件?个人域名转为公司该怎么做?
- AR/VR开发工具Amazon Sumerian正式上线了
- 一文深入了解:分布式系统中的缓存架构
- 缓存,你真的用对了么?
- 4、说起来容易
- 搭建模型第一步:你需要预习的NumPy基础都在这了
- 厉害了!用不到20行的Python代码构建一个对象检测模型
- 国外大神总结的10个Java编程技巧!
- 域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。
- 2018年上半年热门编程语言排行榜,Java竟不是第一,Python笑了