设a和b均为double型变量,且a=5.5,b=2.5,则表达式:(int)a+b/b的值是多少,为什么
(int)a+b/b=6.0。
(int)a = 5;对于b/b,因为b是double类型,所以它们的商也是一个double类型,为2.5/2.5 = 1.0(注意要在小数位上加一个0);
最后计算5 + 1.0 = 6.0,因为5是int类型,而1.0是double类型,它们俩相加时,5将自动转换成double类型数据5.0,从而实际参加运算的是:5.0 + 1.0 = 6.0。
在C语言中,将一个double类型的数据强转成int类型时,将会丢弃该数据的小困肢数部分,而只保留它的整数部分。明乎
强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
扩展资料
数字数据类型有Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和 Currency(货币型)。
类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
参考资料来源:百度百科-强制类型转换
参考资料来源:百度百汪槐世科-数据类型
(int)a+b/b=6,应为(int)a就是将a取整,a取整后就是5(这里不能用四舍五入取整,舍弃小数部分取整,然后b/b就是2.5/2.5等于1,故(int)a+b/b=6。下图是用python计算的结果。
扩展资料:
c++取整:
1、直接赋值给整数变量。如:int i = 2.5; 或 i = (int) 2.5;这种方法采用的是舍去小数部分。
2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),而下面介绍的取整函数拍唤返回值是double。整数除法对正数的取整是舍去小数部分,可以用于你的问题。但是整数除法对负数的取整结果和使用的C编译器有关。
3、使用floor函数。floor(x)返回的是陆贺正小于或等于x的最大整数。如:floor(2.5) = 2,floor(-2.5) = -3。
4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:ceil(2.5) = 3,ceil(-2.5) = -2,floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。floor函数可以用于你的问题。
参早悔考资料来源:csdn官网-C++取整
这个涉及到C语言中强制类型转换的知识。
在C语言中,将一个double类型的数据强转成int类型时,将会丢弃该数据的小数部分,而只保留它歼埋乱的整数部分,因此(int)a = 5;对于b/b,因为b是double类型液指,所以它们的氏档商也是一个double类型,为2.5/2.5 = 1.0(注意要在小数位上加一个0);最后计算5 + 1.0 = 6.0,因为5是int类型,而1.0是double类型,它们俩相加时,5将自动转换成double类型数据5.0,从而实际参加运算的是:5.0 + 1.0 = 6.0.
最后告诉你一个转换的法则:
double ←── float 高
↑
long
↑
unsigned
↑
int ←── char,short 低
2012-07-19
=5+1.0
=6.0 -------->结果是double型的。
可答案是6.000000
6.0以%f或者%lf输出,结果可能是:6.000000,或者是6.00000000000000。