c语言,本人菜鸟,高手来

已知:x=2.5,a=7,y=5.3:表达式x+a%3*(int)(x+y)%2/4的值为多少
算法也说明一下
最新回答
逐风

2024-10-14 09:57:11

先看下运算符的优先级

()
/ 除 表达式/表达式 左到右 双目运算符
* 乘 表达式*表达式 双目运算符 左到右
% 余数(取模) 整型表达式/整型表达式 双目运算符 左到右
+ 加 表达式+表达式 左到右

先算(),x+a%3*(int)(x+y)%2/4 = x+a%3*7%2/4
先算除,x+a%3*7%2/4 = x+a%3*7%(2/4)
再算 * ,x+a%3*7%(2/4) = x+7%21%(2/4)
所以个人觉得,7%21%(2/4)= 0,最终就是x的值,
但是在vc中结果是这样的
#include<stdio.h>
void main(){
int a=7;
float x=2.5,y=5.3;
float b;
b = x+a%3*(int)(x+y)%2/4;
printf("b=%d",b);
}
b=0 Press any key to continue
会输但不会哭

2024-10-14 09:38:24

结果是:2.5
算法
先算a%3结果是1你该会算吧
在算(int)(x+y)
x+y本来是7.8你前面加了一个int类型强制转换结果去int型结果为7
接着是算a%3*(int)(x+y)的质1*7=7
7%2=1应该没问题吧
1/4因为你的基本类型是(int)结果取整为0
x+0=2.5
好了就是这么算的
加QQ可以一起学习我也是新手呵呵
1394481913
人潮拥挤我该远离

2024-10-14 08:45:03

2.5
追问
可以说一下怎么算吗