由于 * / %以及()优先级相同,并且高于+,所以会先计算:a%3*(int)(x+y)%2/4由于()的优先级最高,所以先计算x+y并进行类型转换,之后上式就变成了:a%3*7%2/4之后由于这里的运算符优先级相同,而且结合性是从左向右的,所以从左向右依次计算,即上式等价于:(((a%3)*7)%2)/4把a=7代入上式,得:(((7%3)*7)%2)/4于是,最终结果是:1/4=0x+0=x=2.5所以最后的计算结果是2.5
定义 int a=7;float x=2.5;y=4.7;请问 x+a%3*(int)(x+y)%2/4 等于多少?这些操作符的顺序是括号大于除号和余号然后是加号结果是2.5+1*7%2/4=2.5 追问 请在详细点。括号(int)(x+y)等于7对吧,然后呢? 追答 是的,int是强制取整,把那个小数部分的去掉,.然后就按*%/这样的顺序算下来啊
x+y=2.5+4.7=7.2;int(x+y)=7;//强制转化为整数a%3*(int)(x+y)%2/4=(7%3)*7%2/4=1*7%2/4=1/4=0;//这里是整形数x+a%3*(int)(x+y)%2/4 =2.5