efectivamente como indica
theluigy13etv el error no es de compilacion sino de tiempo de ejecución
normalmente las variables son limitadas
int son 32 bits, desde -2147483647, hasta 2147483647
unsigned int 32 bits sin signo, desde 0 hasta 4294967295
unsigned long int son 64 bits, desde 0 hasta 18446744073709551615
de todas formas puedes comprobarlo con el siguiente codigo
#include <stdio.h>
int main (){
printf("Maximo uint %u\n",(unsigned int)-1);
printf("Maximo ulong %lu\n",(unsigned long int)-1);
}