Вот небольшая программа. Должен ли он печатать 0 или 1, или он имеет неопределенное поведение?
#include
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;
}
Это взято из повторного CSmith теста, и этот случай обсуждается подробнее здесь .
In в частности, GCC, KCC и CompCert выводят 0, тогда как MSVC 2010, ICC 12.0.2 и последние версии Clang выводят 1.