为什么结果是一个这么大的数

为什么结果不是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)来输出的,因为<<其实是一个(运算符重载)函数,它具有很多重载类型,而后面的表达式决定了按照什么输出。