复合算术运算符解读
C语言中的运算符总结解读

C语言中的运算符总结C语言中的操作符:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员。
1.算术操作符:+ - * / %1除了% 操作符之外,其他的几个操作符均可以作用于整数和浮点数。
2对于/ 操作符,如果两个操作数都为整数,执行整数除法;而只要有浮点数执行的就是浮点数除法。
3% 操作符的两个操作数必须为整数,返回的是整除之后的余数。
2.移位操作符: << 左移操作符和 >> 右移操作符(针对二进制位、是对整数的操作1左移操作符移位规则:左边丢弃、右边补0。
2右移操作符移位规则:(1算术移位:左边补符号位,右边丢弃。
(2逻辑移位:左边补0,右边丢弃。
注:对于移位运算符,不能移动负数位,这个是标准未定义的。
3.位操作符:& 按位与 | 按位或 ^ 按位异或(操作数都必须是整数,是针对二进制数的操作4.赋值操作符:= 可以重新为变量赋值(赋值操作符是可以连续使用的,从右向左执行,不建议使用。
5.复合赋值符:+= = *= /= %= >>= <<= &= |= ^=6.单目操作符:! 逻辑反操作(真---假- 负值+ 正值& 取地址从内存中取地址,不能从寄存器register 中取址。
sizeof 操作数的类型长度(以字节为单位~ 一个数的二进制按位取反-- 前置、后置-- ++ 前置、后置++ (1前置++和--:先自增后使用,表达式的值是自增之后的值。
先自减后使用,表达式的值是自减之后的值。
(2后置++和--:先使用再自加。
先使用再自减。
* 间接访问操作符(解引用操作符(类型强制类型转换7.关系操作符:> >= < <= != 不相等 == 相等注:== 相等 = 赋值,二者易混淆,需注意。
8.逻辑操作符:&& 逻辑与|| 逻辑或注:逻辑与、逻辑或是判断真假的,按位与、按位或是对二进制数进行操作的。
c语言运算符

c语⾔运算符1.运算符概述运算符是⼀种编译器执⾏特定的数学或逻辑操作的符号。
C语⾔提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符条件运算符其他运算符2.算术运算符算术运算符分为单⽬运算符和双⽬运算符,单⽬运算符表⽰只需要⼀个操作数,双⽬运算符需要两个操作数。
# 2.1 双⽬算术运算符1)+ :加法,把两个操作数相加2)- :减法,从第⼀个操作数中减去第⼆个操作数3)* :乘法,把两个操作数相乘4)/ :除法,第⼀个操作数除以第⼆个操作数5)% :求模(取余),第⼀个操作数除以第⼆个操作数所得余数双⽬运算符中,C语⾔中的加号、减号与数学中的⼀样。
乘号、除号因为ASCII符号中没有与数学中相对应的符号,所以使⽤星号表⽰乘号,使⽤斜线表⽰除号。
C语⾔中增加了⼀个求模运算符,是⽤来取余的。
需要注意的是,求模运算符的两个操作数必须是整型。
【实例6.1】加减乘除以及取模运算#include <stdio.h>int main(){int a = 21;int b = 10;int c;float d = 2.5;double e;int f = -21;int g = -10;c = a + b;printf(" a + b = %d\n", c);c = a - b;printf(" a - b = %d\n", c);c = a * b;printf(" a * b = %d\n", c);c = a / b;printf(" a / b = %d\n", c);e = a / d;printf(" a / d = %lf\n", e);c = a % b;printf(" a %% b = %d\n", c);c = a % g;printf(" a %% g = %d\n", c);c = f % b;printf(" f %% b = %d\n", c);c = f % g;printf(" f %% g = %d\n", c);return0;}执⾏以上程序,输出结果为:a +b = 31a -b = 11a *b = 210a /b = 2a / d = 8.400000a %b = 1a % g = 1f % b = -1f %g = -1实例解析:加、减与数学中的⼀样,其中需要说明的是除法以及取模运算。
C语言中《赋值运算》

3.1复合赋值运算算术运算符“+ —* / %”和赋值运算符“=”结合起来,形成复合赋值运算符。
如下所示:+= :加赋值运算符。
如a+=3+1,等价于 a=a+(3+1)。
-= :减赋值运算符。
如a-=3+1,等价于 a=a-(3+1)。
*= :乘赋值运算符。
如a*=3+1,等价于 a=a*(3+1)。
/= :除赋值运算符。
如a/=3+1,等价于 a=a/(3+1)。
%= :取余赋值运算符。
如a%=3+1,等价于 a=a%(3+1)。
复合赋值运算符的作用是先将复合运算符右边表达式的结果与左边的变量进行算术运算,然后再将最终结果赋予左边的变量。
所以复合运算要注意:一、是复合运算符左边必须是变量;二、是复合运算符右边的表达式计算完成后才参与复合赋值运算。
复合运算符常用于某个变量自身的变化,尤其当左边的变量名很长时,使用复合运算符书写更方便。
Eg 1:赋值运算符的演示:#include <stdio.h>void main(){int nA=10;int nB=10;printf("%d\t",nA+=nA-=nA*nA);printf("%d ",nB+=nB-=nB*=nB);}运行结果:-180 03.2自增自减运算自增运算符和自减运算符自增和自减运算符是C++语言所特有的,主要用于给一个变量加1或减1。
自增和自减运算符及其功能如下:+ +:自增运算符。
如a++; ++a;都等价于a=a+1。
- -:自减运算符。
如a- -; - -a;都等价于a=a-1。
自增运算符和自减运算符可以放到变量前面(前置方式)或者后面(后置方式),这两种方式同样实现了变量的自增或自减运算。
但是当变量的自增运算或者自减运算同其它运算符配合构成一个表达式时,前置运算时变量先做自增或自减运算,再将变化后的变量值参加表达式中的其它运算。
后置运算时变量在参加表达式中的其它运算之后,再做自增或自减运算。
c语言运算符号详解

c语言运算符号详解摘要:一、C语言运算符号概述1.运算符号的定义与分类2.运算符号在C语言中的重要性二、算术运算符1.加法运算符2.减法运算符3.乘法运算符4.除法运算符5.取模运算符6.自增运算符7.自减运算符三、关系运算符1.等于运算符2.不等于运算符3.大于运算符4.小于运算符5.大于等于运算符6.小于等于运算符四、逻辑运算符1.与运算符2.或运算符3.非运算符五、位运算符1.位与运算符2.位或运算符3.位非运算符4.位异或运算符5.左移运算符6.右移运算符六、赋值运算符1.简单赋值运算符2.复合赋值运算符七、条件运算符1.条件运算符的定义2.条件运算符的用法八、逗号运算符1.逗号运算符的定义2.逗号运算符的用法九、指针运算符1.取内容运算符2.取地址运算符十、求字节数运算符1.sizeof运算符的定义2.sizeof运算符的用法正文:C语言运算符号详解C语言是一种功能强大的编程语言,广泛应用于各种领域。
在C语言中,运算符号是构成表达式的重要组成部分。
本文将对C语言中的运算符号进行详细介绍。
一、C语言运算符号概述C语言运算符号主要分为以下几类:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符、逗号运算符和指针运算符。
这些运算符号在C语言中起到非常重要的作用,它们用于表示各种运算关系,从而实现程序逻辑的控制。
二、算术运算符算术运算符用于进行基本的数值运算,包括加法、减法、乘法、除法、取模等。
C语言中的算术运算符如下:1.加法运算符:+2.减法运算符:-3.乘法运算符:*4.除法运算符:/5.取模运算符:%6.自增运算符:++三、关系运算符关系运算符用于比较两个值之间的大小关系,包括等于、不等于、大于、小于、大于等于和小于等于等。
C语言中的关系运算符如下:1.等于运算符:==2.不等于运算符:!=3.大于运算符:>4.小于运算符:<5.大于等于运算符:>=6.小于等于运算符:<=四、逻辑运算符逻辑运算符用于进行逻辑判断,包括与、或、非等。
全国计算机二级考试C语言(最全复习资料)

第一部分 C语言知识复习资料第一章C语言基本知识【考点1】C程序用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。
源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。
C语言有三种基本结构:顺序结构、选择结构、循环结构。
【考点2】main函数又称主函数,是C程序的入口。
main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。
一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。
每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。
【考点3】存储形式计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。
二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。
数据的存放位置就是它的地址。
【考点4】注释是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
【考点5】书写格式每条语句的后面必须有一个分号,分号是语句的一部分。
一行内可写多条语句,一个语句可写在多行上。
【考点6】标识符是标识名字的有效字符序列,可以理解为C程序中的单词。
标识符的命名规则是:(1)标识符只能由字母、数字和下划线组成,字母区分大小写。
(2)标识符的第一个字符必须是字母或下划线,不能为数字。
C语言标识符分如下3类(1)关键字。
它们在程序中有固定的含义,不能另作他用。
如int、for、switch等。
(2)预定义标识符。
预先定义并具有特定含义的标识符。
如define、include等。
(3)用户标识符。
用户根据需要定义的标识符,符合命名规则且不与关键字相同。
【考点7】常量与变量常量是指在程序运行过程中,其值不能改变的量。
c语言的计算符号

c语言的计算符号C语言中常用的计算符号包括:1.加法运算符(+):用于将两个数相加。
2.减法运算符(-):用于将一个数减去另一个数。
3.乘法运算符(*):用于将两个数相乘。
4.除法运算符(/):用于将一个数除以另一个数。
5.取模运算符(%):用于求两个数的余数。
6.赋值运算符(=):用于将一个值赋给一个变量。
7.自增运算符(++):用于将一个变量的值加1。
8.自减运算符(--):用于将一个变量的值减1。
9.增量运算符(+=):用于将一个变量的值加上另一个值。
10.减量运算符(-=):用于将一个变量的值减去另一个值。
11.乘法赋值运算符(*=):用于将一个变量的值乘以另一个值。
12.除法赋值运算符(/=):用于将一个变量的值除以另一个值。
13.取模赋值运算符(%=):用于将一个变量的余数赋给另一个变量。
这些符号可以组合使用,以实现更复杂的计算和操作。
例如,表达式“a+b*c”表示将a加上b和c的乘积,而“x++”表示将x的值加1,并将结果存储在x中。
除了上述提到的计算符号外,C语言还提供了其他一些计算符号,包括:1.算术运算符:包括加(+)、减(-)、乘(*)、除(/)、取余(%)等。
2.关系运算符:用于比较运算,包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)等。
3.逻辑运算符:包括逻辑与(&&)、逻辑或(||)和逻辑非(!)等。
4.位运算符:用于二进制位运算,包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)等。
5.条件运算符:也称为三元运算符,用于条件求值,格式为“? :”。
6.逗号运算符:用于将多个表达式组合成一个表达式。
7.赋值运算符:包括简单赋值(=)、复合算术赋值(+=、-=、*=、/=、%=)和复合位运算赋值(&=、|=、^=、>>=、<<=)等。
计算机等级考试 二级C语言讲义 第二讲 运算符和表达式

第二讲主要内容运算符表达式一.运算符1.算术运算符和算术表达式C语言的运算符具有不同的优先级,而且还有一个特点,就是它的结合性。
在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。
这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。
C运算符简介C语言的运算符可分为以下几类:1.算术运算符:用于各类数值运算。
包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符:用于比较运算。
包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符:用于逻辑运算。
包括与(&&)、或(||)、非(!)三种。
4.赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
5.逗号运算符:用于把若干表达式组合成一个表达式(,)。
6.指针运算符:用于取内容(*)和取地址(&)二种运算。
7.求字节数运算符:用于计算数据类型所占的字节数(sizeof)。
8.特殊运算符:有括号(),下标[],成员(→,.)等几种。
9.条件运算符:这是一个三目运算符,用于条件求值(?:)。
10.位操作运算符:参与运算的量,按二进制位进行运算。
包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
1.1算术运算符和算术表达式1.基本的算术运算符●加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。
如a+b,4+8等。
具有左结合性。
●减法运算符“-”:减法运算符为双目运算符。
C语言运算符的结合性及运算关系

优先级
运算符
含义
运算类型
结合性
()
圆括号、函数参数表
单目运算符
1
[]
数组元素下标
自左向右
->
指向结枸体成员
双目运算符
.
引用结构体成员
!
逻辑非
~
按位取反
++ --
增 1 、减 1
2
-
求负
单目运算符
自右向左
*
指针间接引用运算符
&
取地址运算符
(类型表示符)
强制类型转换运算符
sizeof
取占内存大小运算符
10
|
按位或
双目位运算符 自左向右
11
&&
逻辑与双目逻辑Biblioteka 算符 自左向右12||
逻辑或
双目逻辑运算符 自左向右
13
?:
条件运算符
三目运算符
自右向左
=
赋值运算符
14
+= -= *= /= %= &= ^= |=
复合赋值运算符
双目运算符
自右向左
<<= >>=
15
,
逗号运算符
顺序求值运算 自左向右
说明:
(1) 运算符的结合性只对相同优先级的运算符有效,也就是说,只有表达式中相同优先
先级高于三目运算符。最后,算术运算符优先级高于其他双目运算符,移位运算符高于
关系运算符,关系运算符高于除移位之外的位运算符,位运算符高于逻辑运算符。
(3)同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符> 关系运算符> && > || > 赋值运算符
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复合算术运算符
现在我们来看看由几种运算符和包含混合数据类型的更复杂的表达式。
优先权规则
算术表达式能够由许多常量、变量、运算符和括号组成,那么操作执行的次序是怎样的呢?例如,在赋值语句中
avgTemp = FREEZE_PT + BOIL_PT / 2.0;
是FREEZE_PT + BOIL_PT 首先被计算呢还是 BOIL_PT / 2.0首先被计算?
基本的算术运算符的运算顺序与数学的运算符顺序是一样的,按照优先权规则:
最高优先级: 单目 + 单目 -
中等优先级: * / %
最低优先级: + -
在上面的表达式例子中隐含着用括号一样:
FREEZE_PT + (BOIL_PT / 2.0
即,我们首先用2除 BOIL_PT然后加FREEZE_PT得到结果。
你能够使用括号改变求值的次序,在语句
avgTemp = (FREEZE_PT + BOIL_PT / 2.0;
中FREEZE_PT 和 BOIL_PT 首先被加,然后它们的和再除以2。
我们首先求括号内的子表达式的值,然后接下来再按运算符的优先权规则求值。
当一个算术表达式有几个具有同样优先权的双目运算符时,它们的结合次序是从左到右。
表达式
int1 - int2 + int3
意味着(intl - int2 + int3, 不是 int1 - (int2 + int3。
另一个例子,我们使用表达式
(float1 + float2 / float1 * 3.0
首先求括号内的表达式的值,然后将得到的和除以float1再乘以3.0。
下面是更多的一些例子。
————————————————————
表达式值
10/2*3 15
10%3-4/2 -1
5.0*2.0/4.0*2.0 5.0
5.0*2.0/(4.O*2.O 1.25
5.0+2.0/(4.0*2.0 5.25
————————————————————
在C++中, 所有的单目运算符都有从右到左的结合性,例如, - + x 意味着 - (+ x 而不是意味着(- + x。
类型的强制和类型的转换
整型值和浮点值被不同的存储在计算机存储器内,如果在一条赋值语句或算术表达式中我们将整数和浮点值混合在一起会发生什么情况?让我们首先看看赋值语句。
赋值语句如果你做如下声明
int someInt ;
float someFloat ;
赋值语句
someFloat = 12;
似乎会存储整型值12到someFloat中,但是不是这样。
计算机拒绝存储任何其它除浮点值外的值到someFloat中。
编译器会插入额外的机器语言指令,首先将12转换为12.0然后再将12.0存储到someFloat 中。
这个隐含的(自动的从一种数据类型的值转换为另一种数据类型的值的转换被称为类型强制。
语句
someInt = 4.8;
同样引起类型的强制。
当浮点值被赋给int变量时,小数部分被截去,因此someInt被赋值为4。
如果我们避免混合数据类型,对一些读程序的人来说,程序就不会出现上面两种赋值语句的混淆的情况。
someFloat = 12.O;
someInt = 4;
类型转换是从一种数据类型值转换为另一种类型值的显式转换。
为了使我们的程序尽可能的清楚,我们可以使用显式类型转换。
一个C++ 类型转换操作由数据类型名然后是用括号括起来的表达式:
someFloat = float(3 somelnt + 2 ;
someInt = int(5.2 / someFloat - anotherFloat ;
两种语句
someInt = someFloat + 8.2;
someInt = int(someFloat + 8.2 ;
产生同样的结果。
注意,在将浮点值存储到一个int变量之前,有一种进行四舍五入而不是截去小数的好方法,下面给出了如何做:
someInt = int(someFloat + 0.5 ;
当someFloat 包含4.7时,什么值存储到someInt中,再试一次,假如someFloat包含4.2,什么值存储到someInt中。
(这是假设someFloat 是一个正数,用加0.5来四舍五入的技术在表达式中也可能有混合的数据类型:
someInt someFloat
4.8 + someInt – 3
这样的表达式被称为混合类型表达式。
无论什么时候,一个整型值和一个浮点值用运算符连接在一起,就隐含着类型强制的出现。
让我们检测计算机如何求表达式4 .8 + someInt – 3的值,这里 someInt 包含值为2。
首先,+运算符的操作数有混合类型,所以 someInt被强制为 2.0 (这种转换只是暂时的,它不影响存储在someInt 内的值。
进行加运算后,产生值6.8。
接下来减(-运算符连接一个浮点值(6.8和一个整型值(3,值3被强制为3.0,进行减运算,结果是浮点值3.8。
像赋值语句一样,在表达式内你可以使用显式类型转换来减少错误。
写表达式如下:
float(someInt someFloat
4.8 + float(someInt - 3
这样使你的意图是什么更清楚。
显式类型转换不仅对程序的清晰是有价值的,而且在某些场合用于纠正编程也是必须的。
给出声明
int sum ;
int count ;
float average;
假设sum 和count 当前包含的值分别为60 和80,如果 sum 表示一组整数值的和并且count表示整数值的数目,让我们求出平均值 average:
average = sum / count; // 错误
这条语句存储值0.0 到average中。
除运算符 / 的两个操作数都是整型int, 所以执行整数除,60除以80 产生结果为整数值0,接着在存储0到 average之前,计算机隐含着强制类型转换将 0转换为0.0。
正确求取平均值average,以及使其更清楚的方法是:
average = float(sum / float(count ;
这条语句给我们用浮点除替代整数除,结果是值O.75被存储到average中。