0

是否保证这段代码打印在任何平台上的值总是从 0 到 15?

#include <stdio.h>

typedef struct UI4{
    unsigned value: 4;
} ui4;

int main(void)
{
    ui4 u;

    u.value = 0;
    while (1) {
        printf("%u\n", u.value++);
    }
    return 0;
}
4

2 回答 2

4

是的,无符号整数溢出保证按照标准“环绕”。

于 2012-10-19T05:06:37.157 回答
2

我认为理论上一些非常奇怪的架构可能会产生不同的结果(基于 BCD 的计算机)?但也许在那种情况下,它不是一个合规的实现。实际上,您应该得到 0 到 15 的 4 位。但我说不要故意溢出。

于 2012-10-19T05:55:57.217 回答