通过指向 unsigned long long 的指针访问 int 会导致 UB 吗?

pol*_*181 2 c++ undefined-behavior

int a;
auto *pa = reinterpret_cast<unsigned long long*>(&a);
*pa = 10;
Run Code Online (Sandbox Code Playgroud)

int 和 unsigned long long 类型具有不同的大小。这段代码会产生未定义的行为吗?

eer*_*ika 7

通过指向 unsigned long long 的指针访问 int 会导致 UB 吗?

是的。程序的行为是未定义的。

int 和 unsigned long long 类型具有不同的大小。

即使大小相同,行为也将是未定义的。

  • @poljak181 是的,我确定。您可以通过指向 unsigned 的指针访问 int ,因为这些类型在“严格别名规则”中存在例外。当然,它们也具有相同的大小,但这并不意味着该例外适用于相同大小的所有类型。 (3认同)