一位同事对此感到困惑,我无法弄清楚这个C程序实际上是如何编译和运行的。这是什么>>>=
运算符和奇怪的1P1
文字?我已经在Clang和GCC中进行了测试。没有警告,输出为“ ???”
#include <stdio.h>
int main()
{
int a[2]={ 10, 1 };
while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] )
printf("?");
return 0;
}
0x.1P1
是一个十六进制字面量指数。该0x.1
是多少的一部分,或1/16这里。“ P”后面的数字是该数字的2的乘方。因此0x.1p1
,实际上是1/16 * 2或1/8。如果你想知道0xFULL
,这只是0xF
,并且ULL
是后缀为unsigned long long