// Clause: 6.5.8 — if right operand is negative or ≥ width of promoted left operand, UB.
// Also UB if a signed left shift overflows (result not representable).
#include <limits.h>
#include <stdio.h>
int main(void){
    int neg = -1;
    int a = 1 << neg;             // UB: negative shift count
    int w = (int)(sizeof(int)*__CHAR_BIT__);
    int b = 1 << w;                // UB: shift count >= width
    int c = INT_MAX << 1;          // UB: signed overflow by left shift
    printf("%d %d %d\n", a,b,c);
    return 0;
}
