www.fltk.net > C语言中求算术表达式的值:设x=2.5,A=7,y=4.7求x+A%3*(int)(x+y)%2/4...

C语言中求算术表达式的值:设x=2.5,A=7,y=4.7求x+A%3*(int)(x+y)%2/4...

#include<stdio.h> void main() { float x=2.5,a=7,y=4.7,z; z=x+a%3*(int)(x+y)%2/4; printf("z=%f\n",z); } 我没运行,答案是多少啊,我不知道

这么少分,还要详细过程……你一步步往下看吧:2.5+7%3*(int)(2.5+4.7)%2/4 ->计算(x+y)=2.5+7%3*(int)(7.2)%2/4 ->计算(int)(7.2)强制类型转换=7=2.5+7%3*7%2/4 ->计算求余7%3=1=2.5+1*7%2/4 ->计算1*7=7=2.5+7%2/4 ->计算求余7%2=1=2.5+1/4 ->计算1/4=0(整数除整数,结果还是整数,0.25成了0)=2.5+0=2.5

2.5

x+a%3*(int)(x+y)%2/4=x+7%3*(int)(7.2)%2/4=x+7%3*7%2/4=2.5+1*7%2/4=2.5+4%2/4=2.5+0/4=2.5

按优先级算,先括号里的,x+y=7.2,取整数=7,就是x+a%3*7%2/4,因为%*/3个优先级相同,从左往右算2.5+7%3*7%2/4=2.5+1*7%2/4=2.5+7%2/4=2.5+1/4=2.5+0=2.5还要看你输出以什么格式,如果是%d整数格式那就是2,如果是%f浮点数那就是2.5希望能解决您的问题.

#include <stdio.h> main(){ float x=2.5; int a=7; float y=4.7; double z; z=x+a%3*(int)(x+y)%2/4; printf("z=%10f\n",z); }

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

先算括号里的.x+y=7.2 然后(int)(int)(x+y)=7 然后,算数运算符从左向右:a%3*7%2/4=7%3*7%2/4=0 然后再算加号:x+0=2.5.1/4==0!!!!当'/'左右两边都是整数 时候,其结果也是整数!

根据运算符优先级,先算x+后面的.a%3就是7对3取余,至此算式简化为:x+1*(int)(x+y)%2/4.1*可以省略,先算括号里的,再次简化为x+(int)7.2%2/4.此时将7.2转为int型,算式变为x+7%2/4,先算7%2,结果为1,算式至此简化

相关搜索:

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com