我想了解更多关于类型双关和别名的信息。因此,我在选项中使用GCC 文档-fstric-aliasing
提供的代码,如下所示:
union a_union{
int i;
double d;
};
int f(){
union a_union t;
t.d=3.0;
return t.i
}
/*what I add*/
int main(int argc, char *argv[])
{
printf("%d\n",f());
return 0;
}
我期望没有什么特别的,但我只得到 0。所以我用不同的值进行测试,t.d
但没有变化。我在 Debian 9 上使用 gcc 6.3 测试此代码,没有选项。我也尝试使用-fno-strict-aliasing
相同的选项
如果有人可以解释,为什么我只得到 0 那就太好了