鉴于此代码段,输出CPU是否依赖?

Sea*_*oob 4 c

void main() {

        if(-1 > 0U)
                printf("True\n");
        else
                printf("False\n");
}
Run Code Online (Sandbox Code Playgroud)

它是依赖于处理器的(大端/小端)吗?

Bra*_*bin 8

C99 6.3.1.8:

[...]否则,如果具有无符号整数类型的操作数的秩大于或等于另一个操作数的类型的等级,则具有有符号整数类型的操作数将转换为具有无符号整数类型的操作数的类型.

因为intunsigned int具有相同的转换级别(见6.3.1.1),-1将被转换为unsigned int.根据6.3.1.3,转换结果将是 (-1 + UINT_MAX + 1) % (UINT_MAX + 1)(算术上说的),这显然UINT_MAX并且因此大于0.

结论是C标准要求(-1 > 0U)成立.

  • @Lundin:通过完全从C标准推导出行为,它表明不依赖于实现. (3认同)