设为首页 加入收藏

TOP

2.4.2 赋值运算符与赋值表达式
2013-10-12 06:59:37 来源: 作者: 【 】 浏览:101
Tags:2.4.2 运算 符与赋 表达式

2.4.2 赋值运算符与赋值表达式

赋值运算符记为“=”,由“=”连接的式子称为赋值表达式。其一般形式为:

  1. 变量= 表达式 

赋值表达式的功能是先计算表达式的值,再赋予左边的变量。赋值运算符具有右结合性。例如:

  1. pi=3.14; /*将常数3.14赋值给变量pi*/  
  2. S=(a+b)*h/2; /*先计算算术表达式(a+b)*h/2的值,再赋值给变量S*/  
  3. L=2*pi*r; /*先计算算术表达式2*pi*r的值,再赋值给变量L*/ 

按照C语言规定,任何表达式在其末尾加上分号就构成语句,如上面的例子中就构成了C语言的赋值语句。

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

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

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

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

整型赋予字符型,只把低八位赋予字符量。

程序 2.2 说明了C语言赋值运算中的类型转换规则,代码如test2.c所示。

【程序 2.2】赋值运算中的类型转换规则:test2.c。

  1. #include <stdio.h> 
  2. main()  
  3. {  
  4. int a,b=322;  
  5. float x,y=8.88;  
  6. char c1='k',c2;  
  7. a=y; /*给整型变量赋实型值*/  
  8. printf("a=%d\n",a);  
  9. x=b; /*给实型变量赋整型值*/  
  10. printf("x=%f\n",x);  
  11. a=c1; /*给整型变量赋字符型值*/  
  12. printf("a=%d\n",a);  
  13. c2=b; /*给字符型变量赋整型值*/  
  14. printf("c2=%c\n",c2);  

程序运行结果如下:

  1. a=8 
  2. x=322.000000  
  3. a=107 
  4. c2=B 

可以看到,由于a 为整型,所以赋予实型变量y 值8.88 后只取整数部分8。x 为实型,赋予整型变量b 值322 后增加了小数部分。字符型变量c1 赋予a 变为整型,整型量b 赋予c2 后取其低八位成为字符型(b 的低八位为01000010,即十进制66,按ASCII 码对应于字符B)。

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

它们等价于各自相应的运算符,例如:

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

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

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

复合赋值符这种写法,对初学者可能不习惯,但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.2 C语言的特点 下一篇2.4.1 算术运算符与算术表达式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: