我有以下程序
int a = 216;
bool* v = (bool*)((void*)&a);
std::cout << (*v == true) << endl;
我希望这个程序打印出 true 或 false,但它打印出 216。我已经用g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
. 是预期的行为还是一些错误?为什么相等运算符会返回与 bool 不同的类型?
- - - - - 编辑 - - - - -
我的意图不是强制转换为 void,而是让 v 将 216 存储在其内存位置。替代程序可能如下所示:
bool v;
int a = 216;
memcpy(&v, &a, sizeof(bool));
std::cout << (v == true) << endl;
或者我可以采用未初始化的布尔指针,它指向某个随机值,例如 216。