为什么结果不是65呢?
```c++
#include
int main()
{
unsigned a{ 1000 };
int* ptr{};
ptr = (int*) &a;
*ptr = -1;
char* ctr{};
ctr = (char*)ptr;
*ctr = 'A';
std::cout << a;
system("pause");
return 0;
}
```
改成 unsigned char a;
std::cout<<(int)a;
你的a是int类型,*ctr = 'A'将最低位设置为'A',但作为int型来说,低位存储的是高字节,所以输出的是个很大的值。
而且你 * ptr = -1之后,a就是个很大很大的值了。
这是什么神仙语法,每个变量后面来一个花括号,虽然也不能说错,但是基本没人这么写,而且也达不到你要的目的。
std::cout << a;
这里是按照a的类型(unsigned)来输出的,因为<<其实是一个(运算符重载)函数,它具有很多重载类型,而后面的表达式决定了按照什么输出。
对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。