C++ 的一个问题,困扰了半天了

来源:百度知道 编辑:UC知道 时间:2024/07/02 21:57:41
float a = 1.0f;

std::cout<<(int)a<<std::endl;
std::cout<<(int &)a<<std::endl;

std::cout<<( (int)a==(int &)a )<<std::endl;

float b = 0.0f;

std::cout<<(int)b<<std::endl;
std::cout<<(int &)b<<std::endl;
std::cout<<( (int)b==(int &)b )<<std::endl;

输出结果依次是:
0
xxxxxxx一个很大的数
0
0
0
1

给你一个比较标准的答复:

浮点数转化为整数时,是取整,而化为整数引用时 (int&)a 相当于 *(int*)&a。
所以 float a=1.0f; (int)a 和 (int&)a 是不同的,1.0f在内存中是 3F800000,作为int看待的话是1065353216,所以(int)a等于1,(int&)a等于1065353216。
而之所以当b=0.0f时,(int)b 和 (int&)b 相等,是因为0.0f和0的内存布局正好一致,都是 00000000。

先告诉我float a = 1.0f;
这个后面带个f是啥意思