软件工程师面试宝典下有一个c++题,不明白(int&)的意思
程序员面试宝典上有一个c++题,不明白(int&)的意思,求助
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
float a = 1.0f;
cout << sizeof(int) <<endl;//4
cout << sizeof(float) <<endl;//4
cout << (int)a << endl;//1
cout << &a << endl;
cout << (int)&a << endl;
cout << (int&)a << endl;
cout << boolalpha << ((int)a == (int&)a ) << endl;// 输出false.因为1!=1065353216.
float b = 0.0f;
cout << (int)b << endl;//0
cout << &b << endl;
cout << (int&)b << endl;//0
cout << boolalpha << ((int)b == (int&)b ) << endl;// 输出true,因为0==0;
return 0;
}
===========
也可以参见这里,http://blog.sina.com.cn/s/blog_96551047010122m9.html。
=========
答案意思是说,(int&)a从a地址处连续去四个字节,就像int一样取。谁能讲一下原理?我记得c语言里同样意思可以如是表达:*(int *)&a。但是c++不熟悉啊
------解决方案--------------------
扔了那破书吧,你会更面试不上好单位的。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
float a = 1.0f;
cout << sizeof(int) <<endl;//4
cout << sizeof(float) <<endl;//4
cout << (int)a << endl;//1
cout << &a << endl;
cout << (int)&a << endl;
cout << (int&)a << endl;
cout << boolalpha << ((int)a == (int&)a ) << endl;// 输出false.因为1!=1065353216.
float b = 0.0f;
cout << (int)b << endl;//0
cout << &b << endl;
cout << (int&)b << endl;//0
cout << boolalpha << ((int)b == (int&)b ) << endl;// 输出true,因为0==0;
return 0;
}
===========
也可以参见这里,http://blog.sina.com.cn/s/blog_96551047010122m9.html。
=========
答案意思是说,(int&)a从a地址处连续去四个字节,就像int一样取。谁能讲一下原理?我记得c语言里同样意思可以如是表达:*(int *)&a。但是c++不熟悉啊
------解决方案--------------------
扔了那破书吧,你会更面试不上好单位的。