一、请先看以下的一段代码:
int main()
{
float a=1.1;//①warning : truncation from 'const double' to 'float'
float b=1.2;//②warning : truncation from 'const double' to 'float'
float c=2.3;
b=a+b;
cout<<sizeof(float)<<endl;//③
cout<<"c="<<c<<" "<<"b="<<b<<endl;
if(c==b)//④
cout<<"b与c相等."<<endl;
else
cout<<"b与c不相等."<<endl;
return 0;
}
解释:1) 在①处我们可以看到一个错误提示"将data区的double型数据转成float将切断double的长度"
2) 在②处是与①同样的效果.
3) 我们在④处看到了一个并不愿意看到的结果,输出"b与c不相等.".
二、理解代码简单工作原理
我们以16位系统为一个对照,float的数据类型所占的字节为4(在③处输出可以看到),为32位,我们先把十