赋值运算符
C51运算符和表达式

1.4关系运算符
关系运算符用于判断某个条件是否满足,条件满足结果 为1,条件不满足结果为0。
C51支持的关系运算符有:>(大于)、<(小于)、>= (大于等于)、<=(小于等于)、==(等于)和!=(不 等于)。其中前4种是高优先级,后2种是低优先级。
用关系运算符将2个表达式连接起来的式子称关系表达式, 关系表达式的格式如下:
1.2 算术运算符
由算术运算符将运算对象连接起来的式子称算术表达式, 算术表达式的格式如下:
表达式1 算术运算符 表达式2 各算术运算符的优先级参见表3-7,计算时按“从左至右”
的结合方式,即相同优先级算术运算符按照从左至右原则。
运算符 + - * / %
功能 加或取正 减或取负
乘 除 取余
举例 19+23、+7 56-41、-9
13*15 5/10=0、5.0/10.0=0.5
9%5=4
1.3 增减运算符
增减运算符是单目运算符,它对运算对象加1或减1操作 后回存至自身。增减运算符参见表3-5。增减运算符运算 对象只能是变量,不能是常数或表达式。
运算符 ++ ――
功能 自加1 自减1
举例 ++i:先执行i+1,再使用i值 i++:先使用i值,再执行i+1 ――i:先执行i-1,再使用i值 i――:先使用i值,再执行i-1
1.9 条件运算符
条件运算符(?:)是一个三目运算符。其一般格式如 下: 逻辑表达式?表达式1:表达式2
条件运算符先计算逻辑表达式,若其值为真(或非0值), 将表达式1作为整个条件表达式的值;若其值为假(或0 值),将表达式2作为整个条件表达式的值。 如:max = (a > b)?a : b, 执行结果是将a和b中较大的值赋值给变量max。
赋值运算符

赋值运算符赋值运算符的定义及其相关使用赋值运算符的定义及其相关使用1。
赋值运算符是运算符的一种,表示可以被赋值操作符调用的运算符,它们能够在参与运算的运算符执行完毕后才返回结果。
赋值运算符是高级语言特有的,与低级语言不同,它没有优先级的概念,而且可以任意给予运算符操作数。
赋值运算符有两个功能:(1)指出可以被赋值的运算符;(2)告诉计算机运算结果的类型。
赋值运算符的用途也非常广泛。
通常用来做数据处理、控制流程或分支选择等。
例如,在函数的参数传递过程中,给一个运算符函数的名字、类型和参数值就是对该运算符的赋值。
另外,要在一个数组中进行某种运算,就必须对该数组进行赋值,这样才能得到结果。
赋值运算符的分类一般有以下几种: 0运算符和零表达式。
2。
赋值运算符的分类方式(如下图所示)具体地说,赋值运算符可分为三类:第一类是函数的参数;第二类是数组元素的赋值;第三类是变量的赋值。
3。
赋值运算符的作用函数的参数是在一个过程中把信息提供给另一个过程的部分变量或数组,从而改变那些被改变了的部分。
在传递这些信息时,就要用到赋值运算符。
赋值运算符通常分为三种:函数的参数;局部变量或数组的赋值;赋值的作用是改变另一个运算的结果。
4。
赋值运算符调用方法(1)调用运算符前的一对双引号;(2)函数的参数和它的参数表达式。
函数参数也是过程的一部分。
传递函数参数和局部变量时,必须给它们赋值。
但由于函数参数是通过函数名来传递的,因此不能直接调用运算符。
5。
赋值运算符的应用场合使用运算符的主要目的是为了将过程或函数连接起来。
例如,要将下面的代码组装成一个自定义函数: 6。
特殊情况下的运算符复制运算符;移位运算符;浮点运算符;逻辑运算符;赋值运算符;括号运算符;按位运算符;乘法和除法运算符;左移运算符;右移运算符;按位运算符;加减运算符;连接运算符;逗号运算符;条件运算符;优先级运算符;多重赋值运算符;乘方和开方运算符。
赋值运算符的特殊应用场合(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语言中各个符号的用法介绍如下: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(制表符)等,用于在字符串中插入特殊字符。
python中复合赋值运算符

python中复合赋值运算符复合赋值运算符是一种简化代码的运算符,它将一个运算符和赋值运算符合并在一起,以便在执行运算的同时进行赋值操作。
Python中常用的复合赋值运算符有以下几种:1. +=(加等于):将右边表达式的值加到左边变量,并将结果赋值给左边变量。
```pythonx = 1x += 2 # 相当于 x = x + 2print(x) # 输出3```2. -=(减等于):将右边表达式的值减去左边变量,并将结果赋值给左边变量。
```pythonx = 5x -= 3 # 相当于 x = x - 3print(x) # 输出2```3. *=(乘等于):将右边表达式的值乘以左边变量,并将结果赋值给左边变量。
```pythonx = 2x *= 3 # 相当于 x = x * 3print(x) # 输出6```4. /=(除等于):将左边变量除以右边表达式的值,并将结果赋值给左边变量。
```pythonx = 10x /= 2 # 相当于 x = x / 2print(x) # 输出5.0```5. //=(整除等于):将左边变量整除右边表达式的值,并将结果赋值给左边变量。
```pythonx = 10x //= 3 # 相当于 x = x // 3print(x) # 输出3```6. %=(取模等于):将左边变量对右边表达式的值取模,并将结果赋值给左边变量。
```pythonx = 10x %= 3 # 相当于 x = x % 3print(x) # 输出1```7. **=(幂等于):将左边变量的值求幂,幂的底数为左边变量,指数为右边表达式的值,并将结果赋值给左边变量。
```pythonx = 2x **= 3 # 相当于 x = x ** 3print(x) # 输出8```8. &=(按位与等于):将左边变量与右边表达式的值进行按位与操作,并将结果赋值给左边变量。
```pythonx = 5x &= 3 # 相当于 x = x & 3print(x) # 输出1```9. |=(按位或等于):将左边变量与右边表达式的值进行按位或操作,并将结果赋值给左边变量。
复合赋值运算符的运算顺序

复合赋值运算符的运算顺序
复合赋值运算符是指包含运算符和等号的一类运算符,例如
+=,-=,*=,/=等等。
在进行复合赋值运算时,有一定的运算顺序需要注意。
首先,复合赋值运算符的运算顺序是从右往左的,也就是说,先进行右边的运算,再将结果赋值给左边的变量。
例如,对于表达式a += b += c,先计算b += c,然后再计算a += (b + c)的结果赋值给a。
其次,在进行复合赋值运算时,需要注意运算符的优先级问题。
一般情况下,复合赋值运算符的优先级比算术运算符低,比比较运算符和逻辑运算符高。
因此,在进行复合赋值运算时,需要注意加上括号,以保证运算顺序的正确性。
最后,需要注意数据类型的转换问题。
在进行复合赋值运算时,如果左右两边的数据类型不一致,需要进行类型转换。
这个过程中可能会出现精度损失或者溢出的问题,需要特别注意。
综上所述,复合赋值运算符的运算顺序需要从右往左进行,注意运算符的优先级问题,以及数据类型的转换问题。
只有正确理解和使用复合赋值运算符,才能写出高效、可靠的程序代码。
- 1 -。
赋值运算符

复合赋值 运算说明
等价于
结合性
+= a+=b -= a-=b
*= a*=b
/=
a/=b
%= a%=b
a=a+b 从右到左 a=a-b
a=a*b a=a/b 从右到左 a=a%b
例: double x=1.5,y=2,z=2;
z-=x+y;
2.0-(1.5+2.0)=-1.5
z=z-(x+y) double型
左边变量的类型为准,将表达式值的类型转换为左边变量 的类型。
int ← float 丢失小数部分(非四舍五入) float ← double 数值溢出或损失精度(位数超过7位时) float ← long 整数的位数超过7位时,损失精度
例:int a=12,b=8; float x,y; b=x=y=a+b; 表达式的值? x的值?b的值?
复合赋值运算练习:
设有如下变量定义,求出i的值:
int i=3,j=5;
float x=2.5,y=5.0;
i-=j*=x+y; 结果:i=-34 计算过程:i=i-(j=j*(x+y))
=i-(j=j*7.5) =i-(j=5*7.5) =i-37=-34
5
例: a=12; a+=a-=a*a;
赋值运算符:= 形式:变量名=常量或表达式 功能:将右边常量或表达ห้องสมุดไป่ตู้的值赋给左边的变量。
a=b; b=a; 优先级:2级(较低) 结合性:从右向左。 例:a=3; b=c+d ; i=j=1; 赋值表达式:由赋值运算符将一个变量和一个表达式连 接起来的式子。
赋值运算中的自动类型转换
07-2.7特殊运算符(赋值运算、、字节数运算、三目条件运算符)

简单信息的表达和运算赵英良❝赋值运算符( = )❝字节数运算符( sizeof() )❝条件运算符(问号, ? : )❝逗号运算符( , )❝等号"="是赋值运算符❝格式<变量> = <表达式>❝作用◦(1)将右边表达式的值存入左边的变量中int a=3,b=5,c;c=a+b; //赋值语句a b c+3 58(2)作为表达式,它的值就是右边<表达式>的值int a=3,b=5,c;cout<<(c=a+b)<<endl; //显示8cout<<c<<endl; //显示8❝优先级较低,低于逻辑运算,和复合算术运算和复合位运算是同级的❝结合顺序是从右向左。
int a=1,b=5,x,y,z;x= y= z = a+b ;// x=( y= ( z = a+b ) ) ;[Error] lvalue required as left operand of assignmentz=a+b;y=z;x=y;z=x+y=a+b; ?❝左值lvalue◦能够出现在等号左边的式子◦能够被赋值的量◦变量、数组元素、对象等❝右值rvalue◦有值的表达式z=x+y=a+b; //不正确z=x+(y=a+b); //正确cout<<(c=a+b)<<endl;//不推荐x= y=z=a+b; //不推荐z=x+(y=a+b); //不推荐❝字节数运算符sizeof()❝格式◦sizeof(<常量、变量、数组、对象>) //表达式的特例、◦sizeof(<类型>) //用法象函数,叫运算符◦sizeof(<表达式>)❝作用◦求某类型的数据或表达式的值占的字节数❝举例◦cout<<sizeof(int)<<" "<<sizeof(x>1)<<endl;❝条件运算符、问号运算符? :❝三目运算❝格式<条件> ?<表达式1> :<表达式2>有这样的函数⎩⎨⎧<≥=0,00,1)(t t t y y=(t >= 0 ? 1 : 0 ) ;#include<iostream> using namespace std; int main(){double t,y; cin>>t;y=(t>=0 ? 1:0); cout<<y<<endl; return 0;}<表达式1> 和<表达式2> 的值应具有相同的类型,或能转换为相同的类型y=( x>1 ?1:"error") ; //错误❝逗号","是一个运算符❝多个表达式用逗号隔开,构成逗号表达式❝格式<表达式1>, <表达式2>, ... ,<表达式n>作用从左向右依次计算n个表达式的值整个表达式的值为<表达式n>的值int a=1,b=2,c=3;int y;y=(a=a+1,b=b+2,c=c+3);相当于a=a+1;b=b+2;c=c+3;y=c;高低sizeof(),按位反逻辑非! ,正、负号算术乘、除、求余* / %算术加、减+ -按位左移<<、右移>>关系: 大于小于>,>=,<,<=关系: 等于不等于==, !=按位与按位异或按位或逻辑与&&逻辑或||条件?:赋值=、复合运算逗号,从右向左1从右向左3从右向左2❝赋值运算=◦起赋值作用◦等于右边表达式的值◦左边必须是变量❝字节数运算符:sizeof(<表达式、类型>) ❝逗号: <表达式1>,<表达式2>,...,<表达式n> y=( <表达式1>,<表达式2>,...,<表达式n> ) ❝条件运算符◦y=(<条件> ?<表达式1> :<表达式2>)所有运算符都使用英文符号!!!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、赋值运算符赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。
符号为‘=’。
这里并不是等于的意思,只是赋值,等于用‘==’表示。
注意:赋值语句左边的变量在程序的其他地方必须要声明。
得已赋值的变量我们称为左值,因为它们出现在赋值语句的左边;产生值的表达式我们称为右值,因为她它们出现在赋值语句的右边。
常数只能作为右值。
例如:count=5;total1=total2=0;第一个赋值语句大家都能理解。
第二个赋值语句的意思是把0同时赋值给两个变量。
这是因为赋值语句是从右向左运算的,也就是说从右端开始计算。
这样它先total2=0;然后total1=total2;那么我们这样行不行呢?(total1=total2)=0;这样是不可以的,因为先要算括号里面的,这时total1=total2是一个表达式,而赋值语句的左边是不允许表达式存在的。
二、算术运算符在C语言中有两个单目和五个双目运算符。
符号功能+ 单目正- 单目负* 乘法/ 除法% 取模+ 加法- 减法下面是一些赋值语句的例子,在赋值运算符右侧的表达式中就使用了上面的算术运算符:Area=Height*Width;num=num1+num2/num3-num4;运算符也有个运算顺序问题,先算乘除再算加减。
单目正和单目负最先运算。
取模运算符(%)用于计算两个整数相除所得的余数。
例如:a=7%4;最终a的结果是3,因为7%4的余数是3。
那么有人要问了,我要想求它们的商怎么办呢?b=7/4;这样b就是它们的商了,应该是1。
也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这里需要说明的是,当两个整数相除时,所得到的结果仍然是整数,没有小数部分。
要想也得到小数部分,可以这样写7.0/4或者7/4.0,也即把其中一个数变为非整数。
那么怎样由一个实数得到它的整数部分呢?这就需要用强制类型转换了。
例如:a=(int) (7.0/4);因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强制转换成整型,这就得到了1。
那么思考一下a=(float) (7/4);最终a的结果是多少?单目减运算符相当于取相反值,若是正值就变为负值,若是负数就变为正值。
单目加运算符没有意义,纯粹是和单目减构成一对用的。
三、逻辑运算符逻辑运算符是根据表达式的值来返回真值或是假值。
其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号功能&& 逻辑与|| 逻辑或! 逻辑非例如:5!3;0||-2&&5;!4;当表达式进行&&运算时,只要有一个为假,总的表达式就为假,只有当所有都为真时,总的式子才为真。
当表达式进行||运算时,只要有一个为真,总的值就为真,只有当所有的都为假时,总的式子才为假。
逻辑非(!)运算是把相应的变量数据转换为相应的真/假值。
若原先为假,则逻辑非以后为真,若原先为真,则逻辑非以后为假。
还有一点很重要,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。
例如:a=2,b=1;a||b-1;因为a=2,为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
四、关系运算符关系运算符是对两个表达式进行比较,返回一个真/假值。
符号功能> 大于< 小于>= 大于等于<= 小于等于== 等于!= 不等于这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。
一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。
看下面的代码:if(Amount=123) ……很多新人都理解为如果Amount等于123,就怎么样。
其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为123,是真值,那么就做后面的。
如果想让当Amount等于123才运行时,应该if(Amount==123) ……五、自增自减运算符这是一类特殊的运算符,自增运算符++和自减运算符--对变量的操作结果是增加1和减少1。
例如:--Couter;Couter--;++Amount;Amount++;看这些例子里,运算符在前面还是在后面对本身的影响都是一样的,都是加1或者减1,但是当把他们作为其他表达式的一部分,两者就有区别了。
运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。
这样讲可能不太清楚,看下面的例子:num1=4;num2=8;a=++num1;b=num2++;a=++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。
b=num2++;这是把num2++的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为9。
那么如果出现这样的情况我们怎么处理呢?c=num1+++num2;到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定,不同的编译器可能有不同的结果。
所以我们在以后的编程当中,应该尽量避免出现上面复杂的情况。
六、复合赋值运算符在赋值运算符当中,还有一类C/C++独有的复合赋值运算符。
它们实际上是一种缩写形式,使得对变量的改变更为简洁。
Total=Total+3;乍一看这行代码,似乎有问题,这是不可能成立的。
其实还是老样子,'='是赋值不是等于。
它的意思是本身的值加3,然后在赋值给本身。
为了简化,上面的代码也可以写成:Total+=3;复合赋值运算符有下列这些:符号功能+= 加法赋值-= 减法赋值*= 乘法赋值/= 除法赋值%= 模运算赋值<<= 左移赋值>>= 右移赋值&= 位逻辑与赋值|= 位逻辑或赋值^= 位逻辑异或赋值上面的十个复合赋值运算符中,后面五个我们到以后位运算时再说明。
那么看了上面的复合赋值运算符,有人就会问,到底Total=Total+3;与Total+=3;有没有区别?答案是有的,对于A=A+1,表达式A被计算了两次,对于复合运算符A+=1,表达式A仅计算了一次。
一般的来说,这种区别对于程序的运行没有多大影响,但是当表达式作为函数的返回值时,函数就被调用了两次(以后再说明),而且如果使用普通的赋值运算符,也会加大程序的开销,使效率降低。
七、条件运算符条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。
<表达式1>?<表达式2>:<表达式3>在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
例如:a=(b>0)?b:-b;当b>0时,a=b;当b不大于0时,a=-b;这就是条件表达式。
其实上面的意思就是把b 的绝对值赋值给a。
八、逗号运算符在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
假设b=2,c=7,d=5,a1=(++b,c--,d+3);a2=++b,c--,d+3;对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。
对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
还有其他的如位逻辑运算符,位移运算符等等,我们等到讲位运算时再说明。
九、优先级和结合性从上面的逗号运算符那个例子可以看出,这些运算符计算时都有一定的顺序,就好象先要算乘除后算加减一样。
优先级和结合性是运算符两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。
下面是C语言中所使用的运算符的优先级和结合性:优先级运算符结合性(最高) () [] -> . 自左向右! ~ ++ -- + - * & sizeof 自右向左* / % 自左向右+ - 自左向右<< >> 自左向右< <= > >= 自左向右== != 自左向右& 自左向右^ 自左向右| 自左向右&& 自左向右|| 自左向右?: 自右向左= += -= *= /= %= &= ^= |= <<= >>= 自右向左(最低) , 自左向右在该表中,还有一些运算符我们没有介绍,如指针运算符、sizeof运算符、数组运算符[]等等,这些在以后的学习中会陆续说明的。