首页 > 试题广场 >

若有定义:int a=7;float x=2.5,y=4.7

[单选题]
若有定义:int a=7;float x=2.5,y=4.7;则表达式 x+a%3*(int)(x+y)%2/4的值是()。
  • 2.500000
  • 2.750000
  • 3.500000
  • 0.000000
int a=7, float x = 2.5, y = 4.7;
x+a%3*(int)(x+y)%2/4
= 2.5 + 7%3 * (int)(2.5 + 4.7) % 2 / 4  // 小括号优先级最高。
= 2.5 + 7%3 * 7 % 2 / 4  // %、*、/ 同优先级,按照从左到右顺序计算; + 优先级最低,最后计算。
= 2.5 + 1/4
= 2.5

发表于 2019-03-01 15:41:36 回复(0)
x+a%3*(int)(x+y)%2/4: 首先优先级由高到低顺序为:括号>强制类型转换>*,/,%(这三运算符优先级相同,按照从左到右运算)>+ 所以计算顺序如下: x+y=7.2 (int)(7.2)=7 a%3=1 1*7=7 7%2=1 1/4:因为1和4都是整型,所以结果也必须是整型,即1/4=(int)0.25=0 x+o=x:x为浮点数,所以答案为A
发表于 2018-07-30 16:11:34 回复(0)
此运算中,
第一优先级是:(括号表达式)
第二优先级是:(类型转换)
第三并行优先级是:*  /  %
第四优先级是:+
所以运算顺序依次为:(x+y)=7.2、(int)(x+y)=7、a%3=1、a%3*(int)(x+y)%2/4=1*7%2/4 因为此时参与运算的全是整型,所以1*7%2/4=1/4也转为整型,最后x+1/4=2.5+0=2.5
编辑于 2017-08-31 10:20:58 回复(0)
此运算中, 第一优先级是:(括号表达式) 第二优先级是:(类型转换) 第三并行优先级是:*  /  % 第四优先级是:+ 所以运算顺序依次为:(x+y)=7.2、(int)(x+y)=7、a%3=1、a%3*(int)(x+y)%2/4=1*7%2/4 因为此时参与运算的全是整型,所以1*7%2/4=1/4也转为整型,最后x+1/4=2.5+0=2.5
发表于 2019-11-07 20:23:13 回复(0)
倒数第二步算错,1/4为0
发表于 2018-07-30 08:23:00 回复(0)
因为int强转,x+y得到结果为7,然后因为是求整数的过程,小数的取值为0,因为最终结果为float,所以结果为2.500000
发表于 2017-08-28 06:11:50 回复(0)