fnhp.net
当前位置:首页 >> 若有定义:int A=7;FloAt x=2.5,y=4.7; ,则表达式x+A%3*(int)( >>

若有定义:int A=7;FloAt x=2.5,y=4.7; ,则表达式x+A%3*(int)(

int a=7; float x=2.5,y=4.7; x+a%3*(int)(x+y)%2/4=> 4.7 + 7 % 3 * (int) ( 2.5+4.7) % 2 / 4=> 4.7 + 1 * (int) (7.2) % 2 / 4=> 4.7 + 1 * 7 % 2 / 4=>4.7 + 1 * 1 / 4=>4.7 + 0=>4.7 考查运算符以及类型转换.

一共出现这么几个操作符:(),+,*,%,/,()优先级顺序依次为:(分块),(强制类型转换),*,+,/,%,其中 / 和 % 优先级相同所以运算的顺序应该是:1.执行分块(x+y) = 2.5 + 4.7 = 7.2;2.执行强制转换(int)7.2 = 7;3.做乘法运算3 * 7 = 21;4.现在表达式变成了x + a % 21 % 2 /4;先做a % 21 % 2/4 = 7 % 21 % 2 / 4= 7 % 2/4 = 1 /4 = 0;最后执行:x + 0 = 2.5 + 0 = 2.5;

这个问题很简单的,* ,/,%,的优先级一样,所以遵循自作至右的原则来运算.先看a%3*(int)(x+y)%2/4.a=7,所以a%7的值等于1,然后x+y=7.2,因为int型转换,转换后为7;1*7依然是7;7%2=1;1/4=0(因为都是整数).X+0=X=2.5; 故结果为2.5

按照加减乘除运算法则及顺序,还有结果转换类型为float,结果为2.5

按从左到右结合律计算,优先顺序,求余-〉乘法,除法-〉加法a%3=1(int)(x+y)=71*7=77%2=11/4=0x+0=2.5

选A =2.5+7%3*7%2/4 =2.5+1*7%2/4 =2.5+1/4 =2.500000

按如下顺序运算:(x+y) = 7.2(int)(x+Y) = 7a%3 = 1a%3*(int)(x+y)%2/4 = 1*7%2/4 = 7%2/4 = 1/4 = 0(注意,所有变量均是Int型)x+0 = 2.5所以答案是2.5

=2.5 +7%3*(int)(2.5+4.7)%2/4=2.5+1*7%2/4=2.5+1/4 //"1/4"得0不同于"1.0/4"=2.5+0=2.5

答案是3.5.先算括号得x+y=7.2,强制转换成int型之后变为7,然后开始算最左边的%(取余数),a%3得1,1*7得7,7%2得1,1%4得1,最后x+1=3.5.注意%是取余数运算,比如5%2,余数为1.

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.fnhp.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com