x+a%3*(int)(x+y)%2/4,
解释一下:因为括号优先级高,先算括号里的,就是X+Y,然后强制转换成整形数据。+的优先级比%,/,*低,所以先算加号后面的。
x+y=7.5,强制转换后成为7,7余2等于1,1/4=0因为是整形数据,所以加号以后的结果就是0,所以总体结果就是X
z=2/4应该写成z=2.0/4.0,2和4是整形,结果就是整形
(int)这个是强制转换成整型~
(int)(x+y)的结果是整型的7
a%3*(int)(x+y)%2=7%3*7%2=1 ,这个结果也是整型的
1/4的结果自然也是整型~所以0.25要取整,得到0~
所以最后a+1/4=2.500000+0=2.500000
最后的结果是浮点型,是因为在运算中,如果浮点+整型,编译系统会自动把整型转换成浮点,然后再进行运算~
"/"这个符号当你用于2/4时,结果的位数和你的除数和被除数有关,像你用2和4,出来的结果只会保留到小数点前
是类型自动转换的问题,1/4=0,因为你的两个运算的数是整型的,所以运算结果也必须是整型的!!
这样你算算就是2.500000
问问老师关于强制转换的知识, int 和float之间是有强制转换的 ,会丢失数据。