C语言赋值运算符与赋值表达式

 我来答
大沈他次苹0B
2022-06-24 · TA获得超过7328个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:178万
展开全部

  我们都知道基本的赋值运算符是"=",他的优先级别低于其他的运算符,所以对该运算符往往最后读取。下面和大家分享一下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+b

  w=sin(a)+sin(b)

  y=i+++--j

  赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性,因此a=b=c=5可理解为a=(b=(c=5))。

  在其它高级语言中,赋值构成了一个语句,称为赋值语句。 而在C中,把“=”定义为运算符,从而组成赋值表达式。 凡是表达式可以出现的地方均可出现赋值表达式。

  例如:式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13。

  在C语言中也可以组成赋值语句,按照C语言规定,任何表达式在其未尾加上分号就构成为语句。因此如x=8;a=b=c=5;都是赋值语句,在前面各例中我们已大量使用过了。

  类型转换

  如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:

  实型赋予整型,舍去小数部分。

  整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。

  字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量。

  【例3-18】

  #include

  int main(void){

  int a,b=322;

  float x,y=8.88;

  char c1=k,c2;

  a=y;

  x=b;

  a=c1;

  c2=b;

  printf("%d,%f,%d,%c",a,x,a,c2);

  return 0;

  }

  本例表明了上述赋值运算中类型转换的规则。a为整型,赋予实型量y值8.88后只取整数8。x为实型,赋予整型量b值322, 后增加了小数部分。字符型量c1赋予a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位为01000010,即十进制66,按ASCII码对应于字符B)。

  注意:经大家反馈,笔者发现上面的例子容易造成误解,现已对代码进行更改,更改时间 2014-07-04 09:12:45,看评论的读者请注意评论时间,不要混淆。

  更改后的代码如下:

  #include

  int main(void){

  int a,c,b=322;

  float x,y=8.88;

  char c1=k,c2;

  a=y;

  x=b;

  c=c1;

  c2=b;

  printf("a=%d, x=%f, c=%d, c2=%c ", a, x, c, c2);

  return 0;

  }

  输出结果:

  a=8, x=322.000000, c=107, c2=B

  复合的赋值运算符

  在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。

  构成复合赋值表达式的一般形式为:

  变量 双目运算符=表达式

  它等效于

  变量=变量 运算符 表达式

  例如:

  a+=5 等价于 a=a+5

  x*=y+7 等价于 x=x*(y+7)

  r%=p 等价于 r=r%p

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式