My friends and I are having an argument about this little piece of code:

```
#include <stdio.h>
#include <stdio.h>

int foo (int k) 
{
    int i, n;

    for (i = i ? 0 : i, n ^= n; i < sizeof(k) * 8;)
        n += k >> i++ & ~-2;
    return n;
}

```

I suspect it won't get compiled because `i` is ***uninitialized***, but my friends think it will. What do you think?