int fred() {
    struct s { int i; } *p;
    int i;

    // order of evaluation (GCC is different)
/*
    i = sizeof( (int) {3} );
    i = sizeof (int) {3};
*/
    // operators

    ! i;
    ~i;
    +i;
    -i;
    *p;
    ++p;
    --p;
    p++;
    p--;

    i+i;
    i-i;
    i*i;

    i/i;
    i%i;
    i^i;
    i&i;
    i|i;
    i<i;
    i>i;
    i=i;

    i==i;
    i!=i;
    i<<i;
    i>>i;
    i<=i;
    i>=i;
    i&&i;
    i||i;
    p->i;
    i+=i;
    i-=i;
    i*=i;
    i/=i;
    i%=i;
    i&=i;
    i|=i;
    i^=i;
    i<<=i;
    i>>=i;

    i?i:i;

    // cast
/*
    double d;
    int *ip;
    (int *) i;
    (* int) i;
    ([char, int *])[d, d];
    [i,ip,ip] = ([int, * int, int *])[1,(void *)2,(void *)3];
    [i,ip,ip] = ([int, * int, int *])([1,(void *)2,(void *)3]);
*/
}
