#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int temp = 300;
cout << "Address of variable temp: " << (unsigned)&temp;
return 0;
}
main.cpp:在函数"int main(("中:main.cpp:17:57:错误:从"int*"转换为"unsigned int"会丢失精度[-fpermission]cout<lt"变量temp的地址:"<lt;(无符号(&临时雇员
将指向int
的指针转换为unsigned int
。
问题是unsigned int
太小,无法包含指向int
的指针的所有可能值。
你可以试试unsigned long long
,它应该足够好
(unsigned long long)&temp;
您可以使用sizeof()
检查类型的维度,返回类型/变量的字节数
使用的我的平台(Linux amd64(
std::cout << sizeof(&temp) << std::endl;
std::cout << sizeof(unsigned) << std::endl;
得到8
(对于sizeof(&temp)
(和4
(对于sizeof(long)
(。
显然,一个4字节的变量不能代表一个8字节变量的所有可能值。
从不同的平台,你可以获得不同的价值观。
不确定为什么要强制转换它。但如果你想查看temp的内存地址,那么你应该执行&temp
。
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int temp = 300;
cout << "Address of variable temp: " << &temp;
return 0;
}