unsigned int is 4 bytes in the system i'm programming. i printed sizeof(unsigned int) and it said 4.

int main(int argc, char * argv[])
        unsigned int a = 0;
        long int b = 2607503366;
/* the b data type must strictly be a long int */ 
        a = (unsigned int) b;
        return 0;

it prints out;


but it must print the same thing. what am i doing wrong?


Because you used a signed type, and your unsigned value is outside the permitted range of your machine.

You also used the wrong printf format, try %lu instead.