gcc would also be warning about the definition of val (assuming you have racked up warning levels)


unsigned long long int val = 18446744073709551615ULL;

Depending on the gcc vintage, %llu...