c整数溢出 - 环绕

时间:2015-05-26 18:08:43

标签: android

我需要找到一个带符号的int,它是negtavie但是作为一个unsinged int等于22(意味着在发生回绕之后)。 int被输入为字符串并用“atoi”转换。

1 个答案:

答案 0 :(得分:0)

实现此目的的唯一方法是使用一个5位长的整数类型并将其包含在16..31之间的负值。

struct foo_t {
    int bar: 5;
} foo;
int main(void)
{
    foo.bar = 22;
    printf("Signed: %d\n", foo.bar);
    return 0;
}

但无论如何,bitfields都是反常的,所以我道歉......