C语言中,复合关系运算符怎么算?

例如 double y=5.0; int i=3,j=5,a=97,b;float x=2.5;y+=i-=j*=++x的值是-9.0,怎么算的?
b=a+=j%i:值为99.
还有(int)x/(int)y+y值为50

double y=5.0;
int i=3,j=5,a=97,b;
float x=2.5;
y+=i-=j*=++x;这个是重最右边往左边算,=的运算方式
首先++x,得到x=3.5,j=j*x=5*3.5=17(因为j是int型,小数点后面的舍弃)
然后i=i-j=3-17=-14;
最后y=y+i=5-14=-9;

b=a+=j%i:
同理:
先a=a+j%i=97+5%3=97+2=99
然后b=a;

(int)x/(int)y+y
先(int)x/(int)y=(int)2.5/(int)5.0=2/5=0;//整数除整数结果为整数
然后0+y,由于y为float型所以结果为float型5.0

a=(a+i, a+j) : 102 //逗号运算,取最后一个式子的结果,,a=(100,102),所以a=102 (float)i/(++j) : 0.5 //(float)3/6=3.0/6=0.5,因为式子中有float所以结果为float
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-08
这个你只要知道运算符的优先级还有隐式类型转换就可以理解了!第一个式子:先算++x,得x=3.5,再算j*=3.5,因为j是int型,得j=17,再算i-=17,得i=-14,最后算y+=-14,因为y是double型,所以y=-9.0;剩下的两个式子也可以得出结果了吧,呵呵。。。本回答被网友采纳
相似回答