void main() {
if(-1 > 0U)
printf("True\n");
else
printf("False\n");
}
它是依賴於處理器(大端/小端)嗎?鑑於此代碼片段,輸出CPU是否依賴?
void main() {
if(-1 > 0U)
printf("True\n");
else
printf("False\n");
}
它是依賴於處理器(大端/小端)嗎?鑑於此代碼片段,輸出CPU是否依賴?
一段代碼是Endian的依賴性僅當它使用指針,其類型爲在尺寸上比的x
類型更小的訪問變量x
。
例如:
int x = 0x12345678;
char* p = (char*)&x;
char c = p[0]; // 0x12 on BE and 0x78 on LE
請注意強調「只在」,在反對「當且僅當」。
因此,一些例子可能仍然工作在相同的上和LE:
struct s {int a; int b;} x = {0x11223344,0x55667788};
int* p = (int*)&x;
int i = p[0]; // 0x11223344 in both cases
注:
位字段結構可用於不同的BE及LE進行編譯。
但是這可以被稱爲編譯器依賴性而不是作爲架構依賴性。
工會也暴露了排序。 –
考慮到編譯器很可能會優化條件,我會說它並不重要。 –
重要嗎? –
-1的存儲方式與2的恭維繫統(我不確定是否有其他現代系統)的字節順序無關(0xFFFFFFFF)(根據值的寬度有更多或更少的F)。 – mah