【发布时间】:2013-12-09 10:52:05
【问题描述】:
我有一个包含 50 个chars 的数组:
char arr[50];
有人告诉我,在 arr[1] 到 arr[4] 之间,我需要得到一个 int。
我做到了:
int *p = (int *)(arr+1);
return *p;
有人告诉我这是一个错误。为什么?
【问题讨论】:
-
因为它违反了strict aliasing rule。
-
这里没有详细说明问题。当然 H2CO3 说的是真的,但你的老师可能是指四个文本数字,或者可能一直在谈论课堂上的字节序。编辑:我看到你自己放置了对齐标签,你有什么理由不说为什么这里的答案不够好?