一个同事给了我一个难题,我无法弄清楚这个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;
}

我偶然发现了下面这个程序,它编译时没有错误,甚至没有警告:

int main(){
  <:]{%>; // smile!
}

生活的例子。

这个程序做什么,那个微笑的表情是什么?