/workspace/CppProject/main.cpp:16:28: error: cast from pointer to smaller type 'int' loses information cout <<"全局变量a:"<< (int)&a << endl;
时间: 2024-03-27 21:40:55 浏览: 54
解决git:fatal:Unable to create”…/.git/index.lock” 的错误
这个错误是因为在代码中使用了强制类型转换将指针类型转换为了int类型,但是int类型的长度可能无法容纳指针类型的长度,导致数据丢失。为了解决这个问题,可以使用指针类型的强制类型转换符```(void*)```,将指针类型转换为void指针类型,再输出。修改后的代码如下所示:
```c++
#include<iostream>
#include<string>
#include<cstring> //添加头文件
using namespace std;
//全局变量
int a;
int b;
//const修饰的全局常量
const int e = 0;
const int f = 0;
int main() {
//静态变量
static int c;
static int d;
//输出各种变量的地址
cout << "以下是他们的地址" << endl;
cout <<"全局变量a:"<< static_cast<void*>(&a) << endl; //使用void指针类型输出
cout <<"全局变量b:"<< static_cast<void*>(&b) << endl;
cout << "静态变量c:" << static_cast<void*>(&c) << endl;
cout << "静态变量d:" << static_cast<void*>(&d) << endl;
cout << "全局常量e:" << static_cast<const void*>(&e) << endl; //使用const void指针类型输出
cout << "全局常量f:" << static_cast<const void*>(&f) << endl;
//字符串常量
char g[] = "pppp"; //定义一个字符串数组
char h[] = "qqqq";
cout << "字符串常量g:" << static_cast<const void*>(g) << endl; //使用const void指针类型输出
cout << "字符串常量h:" << static_cast<const void*>(h) << endl;
system("pause");
return 0;
}
```
这样修改后,就可以消除这个错误了。
阅读全文