当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?
#include<stdio.h>
#include<stdlib.h>
static char mem[4];
int main()
{
int* A = (int*)(mem);
mem[0] = 0;
mem[1] = 1;
mem[2] = 2;
mem[3] = 3;
int i;
A[0] = 5;
for (i = 0; i<4; i++)
{
printf("%d\t", mem[i]);
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么打印5 0 0 0而不是5 1 2 3?为什么阵列"消失了?"