5
我遇到了一些奇怪的代碼。它甚至不像C,但令我驚訝的是它編譯並運行在我的C編譯器上。這是對C語言的非標準擴展嗎?如果是這樣,它的原因是什麼?這些奇怪的問號是什麼意思?
??=include <stdio.h>
int main()
??<
const char arr[] =
??<
0xF0 ??! 0x0F,
??-0x00,
0xAA ??' 0x55
??>;
for(int i=0; i<sizeof(arr)/sizeof(*arr); i++)
??<
printf("%X??/n", (unsigned char)arr??(i??));
??>
return 0;
??>
輸出:
FF
FF
FF
這是我邁向混淆的第一步。我不認爲很多C編碼人員都知道這一點。 – Abhineet
[C++代碼中\'??? - \'的含義]的可能重複(http://stackoverflow.com/questions/16662276/meaning-of-in-c-code) – usr2564301
您應該重構看起來像這個。一個快速的方法是用「??=」代替「?? =」,在其上運行gcc -trigraph -E,然後用「#」替換輸出中的「??=」,同時刪除前幾行由gcc輸出。 –