Given the following program: int main() { unsigned int squiggy = 2147483648; } Compliing on GCC 3.2.3, I get the following warning: $ gcc foo.c foo.c: In function `main': foo.c:3: warning: decimal constant is so large that it is unsigned To the best of my knowledge, 2147483648 should fit with ample room to spare in an unsigned (4-byte) integer. What's going on?