首页 > 编程语言 > 详细

C语言运算符的注意问题

时间:2015-05-13 00:52:41      阅读:309      评论:0      收藏:0      [点我收藏+]
//对于自增和自减运算符的运算规律值得研究,小心被坑。
1
#include<stdio.h> 2 int main(void){ 3 int i=5,j=5,p,q; 4 p=(i++)+(i++)+(i++); 5 q=(++j)+(++j)+(++j); 6 printf("p=%d,q=%d,i=%d,j=%d",p,q,i,j); 7 return 0; 8 }

他的运行结果:

技术分享

q=(++j)+(++j)+(++j)按理应该是21的啊!

原来:对于 q=(++j)+(++j)+(++j),先计算 (++j)+(++j),因为是“前自加”,要先计算两次 ++j,此时 j=7,然后相加,相当于 7+7,结果为14;然后计算 14+(++j),相当于 14+8,结果为22。

这就是Fedora 平台特点,其他平台可以自测。

类型转换

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

  • 实型赋予整型,舍去小数部分。
  • 整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
  • 字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量。

复合的赋值运算符

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

 

C语言运算符的注意问题

原文:http://www.cnblogs.com/liujie037/p/4499136.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!