c - 为什么不引发异常?如果枚举大小小于 100 字节

标签 c unions

<分区>

union 的大小是 95 字节,为什么如果我尝试访问 a 处的 102 位置,却没有引发异常?或者我只是覆盖了另一个内存位置?

   #include<stdio.h>

  union u{
      char a[95];
      int b;
      char *c;
    };

   union u u1;
   int main()
   {
       u1.a[102] = 'b';
       printf("%c",u1.a[102]);
      return 0;
    }

最佳答案

这是未定义的行为。你运气不好,什么都没发生。

关于c - 为什么不引发异常?如果枚举大小小于 100 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046949/

相关文章:

c - 当 union 类型被传递给函数时查找 union 类型

c - 结构错误中的 union

检查矩阵中单元值的邻居

c - 如何使用 x86intrin.h

c - C 中指针的二分查找

c++ - 异构HashMap c++

c - gdb 在修改参数时打印错误的值

c - 如何在 C 程序中定义具有大小为 N 的随机值的复数 vector

c - C中的"Classes and initializers"

c++ - std::array 的这个 union 的公共(public)初始序列有问题吗?