Tag: strict aliasing

通过C转换访问结构的第一个字段是否违反了严格的别名?

此代码是否违反严格别名? struct {int x;} a; *(int*)&a = 3 更抽象的是,只要原始读/写操作类型正确,在不同类型之间进行转换是否合法?

C未定义的行为。 严格别名规则或错误对齐?

我无法解释这个程序的执行行为: #include #include #include typedef char u8; typedef unsigned short u16; size_t f(u8 *keyc, size_t len) { u16 *key2 = (u16 *) (keyc + 1); size_t hash = len; len = len / 2; for (size_t i = 0; i < len; ++i) hash += key2[i]; return hash; } int main() { srand(time(NULL)); size_t len; […]