相关疑难解决方法(0)

有符号位域的多重不一致行为

我在签名位域上遇到了一个奇怪的行为:

#include <stdio.h>

struct S {
    long long a31 : 31;
    long long a32 : 32;
    long long a33 : 33;
    long long : 0;
    unsigned long long b31 : 31;
    unsigned long long b32 : 32;
    unsigned long long b33 : 33;
};

long long f31(struct S *p) { return p->a31 + p->b31; }
long long f32(struct S *p) { return p->a32 + p->b32; }
long long f33(struct S *p) { return p->a33 + p->b33; }

int main() { …
Run Code Online (Sandbox Code Playgroud)

c gcc clang language-lawyer bit-fields

7
推荐指数
1
解决办法
160
查看次数

标签 统计

bit-fields ×1

c ×1

clang ×1

gcc ×1

language-lawyer ×1