C语言运算符的注意问题

时间:2015-05-13 00:53:08   收藏:0   阅读:159
//对于自增和自减运算符的运算规律值得研究,小心被坑。
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
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!