帮我看看这个结果
float b = 0.0f;
cout < < "(int)b= " < < (int)b < < endl;
cout < < "(int&)b= " < < (int&)b < < endl;
cout < < boolalpha < < ( (int)b == (int&)b ) < < endl;
输出为true;
(int&)b怎么=0,是b的地址吗,b的地址不一定=0啊,
[解决办法]
打印的是0的float型数据吧
[解决办法]
(int&)b怎么=0,是b的地址吗,b的地址不一定=0啊,
======================
不是b的地址,&b才是地址..
[解决办法]
0.0f 是char *
初值为0
[解决办法]
嗯 你 我也不记得了 你试试float b = 1.0f;
1.0f在内存中是 0x3f800000
估计用这个就试false了
0.0f太特殊了 比较没意思
[解决办法]
思路不够清晰哦。。
既然你想打印b的地址,怎么还能拿b的地址与b比较
float b = 0.0f;
cout < < "(int)b= " < < (int)b < < endl;
cout < < "(int&)b= " < < &b < < endl;
cout < < boolalpha < < ( (int)b == int(&b)) < < endl;
不觉得这程序有点怪怪的?
[解决办法]
float b = 0.0f;
cout < < "(int)b= " < < (int)b < < endl;
cout < < "(int&)b= " < < (int&)b < < endl;
cout < < boolalpha < < ( (int)b == (int&)b ) < < endl;
输出为true;
(int&)b怎么=0,是b的地址吗,b的地址不一定=0啊,
--------------------------------------------------
(int&)b不是b的地址,是将b转化为int型引用,相当于下面的表达式*((int *)(&b)),取b的地址,然后强制转化为int *,然后取得此指针所指向的内存的内容。
(int&)b = 0,这个跟浮点数在内存中的表达方式有关。并不是在所有类型的机器上都等于0。
(int)b等于0, (int&)b也等于0,so 输出为true.