4位无符号溢出

时间:2012-10-19 05:00:38

标签: c

是否可以保证这段代码在任何平台上的打印值始终为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;
}

2 个答案:

答案 0 :(得分:4)

是的,保证无符号整数溢出&#34;环绕&#34;按标准。

答案 1 :(得分:2)

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