标签:
//对于自增和自减运算符的运算规律值得研究,小心被坑。
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 平台特点,其他平台可以自测。
如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。
标签:
原文地址:http://www.cnblogs.com/liujie037/p/4499136.html