关于C语言的简单问题,会的都来看看
问题1:实型常量中的浮点数的尾数的取值有没有规定什么范围啊?如果有那么范围是多少呢?
问题2:若有定义:int x=3,y=2;float a=2.8,b=3.2;则算式 (x+y)%2+(int)a/(int)b 的值是多少呢?这个问题我自己算的答案是等于3,但我看书上的答案却是等于1,请问我是真的算错了吗?如果错了,请指出我的错处,谢谢
参考答案:% 是取余 3对2取余是1
int a 是2
int b 是3
a/b=0
1+0=1
所以是1
整数间执行除法运算时,要使用 "\" 而不是 "/"。 "/" 运算符要求返回一个单一数值,
C% = A% / B%
实际上包含了3个隐含的转换操作:2个为除法运算做准备,从Integer转换到Single;一个完成最后的赋值操作,从Integer转换到Single。但是如果使用了"\"操作符,情况就大不相同了!不仅不会有这么多中间步骤,而且执行速度大大提高。
同时请记住:使用"/"操作符做除法运算时,如果其中之一是Double类型,那么结果就将是Double类型。所以,当2个Integer或者Single类型数值做除法运算时,如果想得到高精度的结果,就需要手工强迫其中之一转换为Double类型: