Вот небольшая программа. Должно ли это печатать 0 или 1 или имеет поведение undefined?
#include <stdio.h>
struct S0 {
unsigned f1 : 1;
};
struct S0 s;
int main (void) {
int x = -3;
int y = x >= (0, s.f1);
printf ("%d\n", y);
return 0;
}
Это взято из теста resent CSmith, и этот случай обсуждается более здесь.
В частности, GCC, KCC и CompCert выдает 0, а MSVC 2010, ICC 12.0.2 и последние результаты Clang 1.