int x ; float y ;则表达式x-y值的正确数据类型为
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/07 16:12:04
答案是11.5.根据运算符优先级,表达式等价于x+(a%2)*【(int)(x+y)】,a%2是a对2取余,结果为1,x+y结果为8.3,强制转换成整形,去掉小数为8,然后3.5+1*8,会算了吧.
#includevoidmain(){inta,b;floatx,y;charc1,c2;scanf("a=%db=%d",&a,&b);scanf("%f%f",&x,&y);scanf("%c%c
#includeintmain(){\x05floaty;\x05intx=-3;\x05y=x%2;//y的值是-1\x05printf("%f\n",y);//输出-1printf("%d\n",
先括号,然后再是乘除,再是从左到右,加减.首先是a%3取余得到4,然后就是(x+y)转换为整型就是7,接下来就是4*7等于28,在把28%2取余就是0,再是0/4就是0.0+x=2.5.
2.200000float知道d=2.200000y计算是1答案就出来了!
执行过程:x除以2 &
解a+b=3为单精度的3/2=1.5隐式类型转换3%2=1最终结果1.5+1=2.5O(∩_∩)O~
#includevoidmain(){intx=2,y=1;floatf=9.8,s=10;f=(int)f+x%3*y/(int)s;//等号右边=9+2%3*1/10=9,将整数9转换为float
1.x-y=2.72.(int)2.7=23.int(x)=74.7+y=11.8int(11.8)=11a+11=155.15的二进制表示为(00001111)6.右移两位左补零(00000011)
%是取余,/是取整7%3=1;7/3=2;
一共出现这么几个操作符:(),+,*,%,/,()优先级顺序依次为:(分块),(强制类型转换),*,+,/,%,其中/和%优先级相同所以运算的顺序应该是:1.执行分块(x+y)=2.5+4.7=7.2
fun前边没有指定.默认为int型
intfun(floatx[],intn){//if(x[j]>=xa)c++;returnc;}
如果你改成printf("%f\n",d*y)结果是2.200000改成printf("%d\n",(int)(d*y))结果就是2这是因为int可以顺利的转换成float,但是float要顺利转换成
1.浮点数加了之后取整(int)(x+y)=(int)(16.8+18.6)=(int)(35.2)=352.a.其中的分号应当用西文的,就像printf句后的那个,用中文分号错误(可能是录入错误?)
计算过程:a+b=5(float)55.05.0/22.5(int)x3(int)y2%取余1最后+2.5+1=3.5
逻辑似乎有问题,你前面是if(x-10),或者elseif(x>n);else.(这里的n表示对于-10的一个数)if..else的逻辑要弄清楚哦