请教一个C++基本问题
float a = 1.0f;
cout < < (int)a < < endl;
cout < < (int&)a < < endl;
cout < < boolalpha < < ( (int)a == (int&)a ) < < endl;
输出是:
1
1065353216
false
(int&)a 是把a给转成什么了?指针还是引用?
打印出来的是什么东西的地址?指针还是引用?
请教,多谢!
[解决办法]
个人理解,应该是转化为引用。
实际上在输出时得到的a的地址。
如果输出16进制的值会看得更清楚一些。
[解决办法]
你试试cout < < (float&)a < < endl;
cout < <&a < <endl;
就应该知道是指针还是引用了
[解决办法]
hehe 我试了下
1065353216是0x3F800000,这就是float中的1的内存数据表示
(int&)a直接将内存浮点类型当int输出 (int )a 将内存中浮点数据强制转换成int表示后再输出
[解决办法]
单精度浮点数:
符号 指数 尾数
1b 8b 23b
float a=1.0, 对应的:
符号 :0==0x0
指数:127==0x7f
尾数:0==0x0
合起来就是0x3f800000
另:8 位的指数为可以表达 0 到 255 之间的 255 个指数值。但是,指数可以为正数,也可以为负数。为了处理负指数的情况,实际的指数值按要求需要加上一个偏差(Bias)值作为保存在指数域中的值,单精度数的偏差值为 127。单精度的实际指数值 0 在指数域中将保存为 127;而保存在指数域中的 64 则表示实际的指数值 -63。
[解决办法]
int&a 脱掉int &a
穿上衣服 int
是地址,把a的地址再转化为int.
感觉还是不对,, (int)&a
放在外面。。。 有些讲不通,,期待高手的出现。。
(int&) 跟函数有没有关系? 有没有空函数 int&(){}
关注。。。
请问一个C++基本有关问题
请教一个C++基本问题floata1.0fcout (int)a endlcout (int&)a endlcout boolalpha ((int)
