复合算术运算符
C语言中的逻辑运算符和位运算符总结

条件的代码。用&&表示“与”运算符,该条件代码如下:
(a<10) && (b==7);
类似地,“或”是用于检查两个条件中是否有一个为真的运算符。它由两个连续的管道符号(||)表示。如果上例
编辑本段运算符优先级等级口诀及注释
运算符优先级等级口诀
圆方括号、箭头一句号, 自增自减非反负、针强地址长度, 乘除,加减,再移位, 小等大等、等等不等, 八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。 其中“,”号为一个等级分段。
运算符优先级等级注释
“圆方括号、箭头一句号”指的是第15级的运算符。其中圆方括号很明显“()、[]”,箭头 指的是指向结构体成员运算符“->”,句号 指的是结构体成员运算符“.” ; “自增自减非反负、针强地址长度”指的是第14级的运算符。其中 非 指的是逻辑运算符“!”,反 指的是按位取反运算符“~”,负 指的是负号运算符“-”,针 指的是指针运算符“*”,强 指的是强制类型转换运算符,地址 指的是地址运算符“&”,长度 指的是长度运算符“sizeof ”; “乘除,加减,再移位”移位指的是左移运算符“<<”和右移运算符“>>”,其中除法还包括了 取余运算符“%”; “小等大等、等等不等” 指的是第10级到第9级的运算符:<、<=、>和>=,等等指的是等于运算符==,不等指的是不等于运算符!= “八位与,七位异,六位或”其中 八位与 指的是第8级的 按位与 运算符“&”,七位异 指的是第7级的按位异或 运算符“^”,六位或 指的是第6级的按位或运算符“||”; “五与,四或”指的是第5级、第4级的逻辑与运算符“&&”和逻辑或运算符“||”; “三疑,二赋,一真逗”指的是第3级到第1级的运算符。其中,三疑指的是条件运算符“?:” (三有双重含义:即指优先级别是三,它的运算符类型也是三目,疑也取“?”之意),二赋 指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,一真逗 指的是第1级的“,”运算符,真字只是为了语句需要罢了。 由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!
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语言运算符号的种类

一、C语言运算符号的种类编辑1 算术运算符用于各类数值运算。
包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符用于比较运算。
包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符用于逻辑运算。
包括与(&&)、或(||)、非(!)三种。
4.位操作运算符参与运算的量,按二进制位进行运算。
包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5.赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6.条件运算符这是一个三目运算符,用于条件求值(?:)。
7.逗号运算符用于把若干表达式组合成一个表达式(,)。
8.指针运算符用于取内容(*)和取地址(&)二种运算。
9.求字节数运算符用于计算数据类型所占的字节数(sizeof)。
10.特殊运算符有括号(),下标[],成员(→,.)等几种。
二、C语言运算符号的优先级编辑1、优先级1级结合方向左结合(自左至右)( ) 圆括号[ ] [1] 下标运算符-> 指向结构体成员运算符. 结构体成员运算符[1] (请注意它是一个实心圆点)2、优先级2级结合方向右结合(自右至左)单目运算符! 逻辑非运算符~ 按位取反运算符++ 自增运算符-- 自减运算符- 负号运算符(类型) 类型转换运算符* 指针运算符& 地址与运算符sizeof 长度运算符3、优先级3级结合方向左结合双目运算符* 乘法运算符/ 除法运算符% 取余运算符4、优先级4级结合方向左结合双目运算符+ 加法运算符- 减法运算符5、优先级5级结合方向左结合双目运算符<< 左移运算符>> 右移运算符6、优先级6级结合方向左结合双目运算符<、<=、>、>= 关系运算符7、优先级7级结合方向左结合双目运算符== 等于运算符(判断)!= 不等于运算符(判断)8、优先级8级结合方向左结合双目运算符& 按位与运算符9、优先级9级结合方向左结合双目运算符^ 按位异或运算符10、优先级10级结合方向左结合双目运算符| 按位或运算符举例:0xfe|0xef 即为1111 1110 与1110 1111按位或运算则答案为:1111 1111 即0xff。
C语言赋值运算符与赋值表达式

C语言赋值运算符与赋值表达式C语言赋值运算符与赋值表达式我们都知道基本的赋值运算符是"=",他的优先级别低于其他的运算符,所以对该运算符往往最后读取。
下面和大家分享一下C语言赋值运算符与赋值表达式,一起来看看吧!C语言赋值运算符与赋值表达式1一、赋值运算符与赋值表达式赋值符号“=“就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。
一般形式为:变量名=表达式在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。
例:a=12;此表达式读作“将10的值赋值给变量a”。
说明:a、如果赋值号两边的运算对象类型不一致,系统会自动进行类型转换,转换的规则:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型,例:inty=3.5;在变量y中最终存储的是整数3。
b、可以将复制表达式的值再赋值给变量,形成连续赋值。
例如:x=y=25是一个连续赋值表达式,x=y=25等价于x=(y=25),所以表达式x=y=25最终的值为25。
二、复合的赋值运算符在赋值运算符之前加上其他运算符可以构成复合赋值运算符。
其中与算术运算有关的'复合运算符是:+=,—=,x=,/=,%=。
两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。
表达式n+=1等价于n=n+1,作用是取变量n中的值增1再赋给变量n,其他复合的赋值运算符的运算规则依次类推。
如求表达a+=a—=axa的值,其中a的初值为12。
步骤:(1)先进行“a—=axa“运算,相当于a=a—axa=12—144=—132。
(2)再进行“a+=—132“运算,相当于a=a+(—132)=—132—132=—264。
C语言赋值运算符与赋值表达式2其一般形式为:变量=表达式例如:x=a+bw=sin(a)+sin(b)y=i+++--j赋值表达式的功能是计算表达式的值再赋予左边的变量。
复合算术运算符解读

复合算术运算符现在我们来看看由几种运算符和包含混合数据类型的更复杂的表达式。
优先权规则算术表达式能够由许多常量、变量、运算符和括号组成,那么操作执行的次序是怎样的呢?例如,在赋值语句中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 1510%3-4/2 -15.0*2.0/4.0*2.0 5.05.0*2.0/(4.O*2.O 1.255.0+2.0/(4.0*2.0 5.25————————————————————在C++中, 所有的单目运算符都有从右到左的结合性,例如, - + x 意味着 - (+ x 而不是意味着(- + x。
c语言中各个符号的用法

c语言中各个符号的用法介绍如下:1.赋值符号=:用于赋值操作。
例如,a = 10;表示将值10赋给变量a。
2.算术运算符:包括+、-、*、/、%等。
分别表示加法、减法、乘法、除法和取模操作。
例如,a + b;和a * b;分别表示a和b 的加法与乘法。
3.比较运算符:包括==、!=、>、<、>=、<=等。
用于比较两个值的大小。
例如,if (a == b)检查a是否等于b。
4.逻辑运算符:包括&&、||和!。
分别表示逻辑与、逻辑或和逻辑非。
例如,if (a > b && c != d)检查a是否大于b且c是否不等于d。
5.位运算符:包括&、|、~、^、<<、>>等。
用于对二进制位进行操作。
例如,a & b;表示a和b的按位与操作。
6.逗号运算符:用于分隔语句和表达式。
例如,在循环或条件语句中,多个语句可以用逗号分隔。
7.括号:用于改变运算顺序或明确表达式的结构。
例如,在复合赋值运算符(如+=、-=等)中,括号用于指定先进行哪部分运算。
8.分号:用于结束语句。
每个语句的末尾都需要分号。
9.注释符号:包括/* */和//。
前者用于多行注释,后者用于单行注释。
10.预处理器指令符号:如#include和#define,用于包含头文件或定义宏。
11.转义符号:如\n(换行)、\t(制表符)等,用于在字符串中插入特殊字符。
c语言算术运算符20题与答案(较难)

1. 复杂表达式计算题目:计算的结果。
答案:132. 复合运算符和优先级题目:计算的结果。
答案:73. 自增运算符在表达式中的使用题目:如果那么的值是多少?答案:124. 自减运算符在表达式中的使用题目:如果那么的值是多少?答案:25. 结合性运算题目:计算的结果。
答案:66. 复合赋值运算符和优先级题目:如果那么的值是多少?答案:-107. 类型转换的陷阱题目:如果那么和的值分别是多少?答案:a = 2, b = 2.08. 强制类型转换题目:如果那么的值是多少?答案:2.09. 浮点数计算题目:计算的结果。
答案:6.010. 复合赋值运算符题目:如果那么的值是多少?答案:2011. 递增和递减混合使用题目:如果那么的值是多少?答案:812. 复杂的混合类型运算题目:计算的结果。
答案:5.513. 运算符优先级和结合性题目:计算的结果。
答案:1014. 递增和复合赋值题目:如果那么的值是多少?答案:1115. 复合运算符和优先级题目:如果那么的值是多少?答案:416. 复杂的复合赋值运算题目:如果那么的值是多少?答案:1517. 运算符结合性题目:计算的结果。
答案:718. 自增运算和优先级题目:如果那么的值是多少?答案:719. 类型转换在复合表达式中的作用题目:计算的结果。
答案:20.020. 递增和递减与赋值题目:如果那么的值是多少?答案:5。
计算机等级考试 二级C语言讲义 第二讲 运算符和表达式

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