C++有什么区别uint64和*uint64?

Jam*_*ore 0 c++

为什么:

const char example;
Run Code Online (Sandbox Code Playgroud)

(uint64*)example 值为140734799798420

*(uint64*)example 值为7004431430466964258

ps不要担心类型转换,我感兴趣为什么第二个*增加值.

谢谢

Mar*_*ers 8

您的代码提供了未定义的行为.你的第二行非法地将一个字符转换为指向uint64的指针(很可能是一个无效的指针).您的第三行尝试取消引用此无效指针.

询问为什么它做它做的事情毫无意义 - 它可以在不同的机器上做不同的事情,并且行为可能会在下一版本的编译器中发生变化.

只是不要这样做.