c++中int(a+ b)的值等于int吗

如题所述

k=int(a+b)是合法的赋值表达式吗?int不是用来定义变量类型的吗?难道int还可以当作运算符来用吗?

3楼说的对,c++是合法的,c不合法,但是不是强制转换,所以不等价于(int)a。c++中可以把int当成一个class来看,k=int(a+b)相当于构造一个int对象然后赋值给k,a+b为构造函数参数,也就是初始化值,这个和自己定义的class类似。另外,c++有一系列的隐式转换,如果a+b不是int型,则编译器会寻找合适的转换,比如把浮点数转成int,这一点看起来比较像强制转换。

double x=5.16894:
printf("%f\n",(int)(x*1000+0.5) /(double)1000)):

输出5.169000

x*1000=5168.94
x*1000+0.5=5169.44
(int)(x*1000+0.5)=5169
(int)(x*1000+0.5) /(double)1000=5.169,整型与double型运算结果为double型
%f默认打印6位小数:5.169000
温馨提示:答案为网友推荐,仅供参考