I am taking an integer, in this case 192, and left shifting it 24 spaces. The leading 1 is causing it to become negative, it seems.
unsigned int i = 192;
unsigned int newnumber = i << 24;
NSLog(@"newnumber is %d",newnumber);
I am expecting 3,221,225,472 but I get -1,073,741,824 (commas added for clarity)
An unsigned integer shouldn’t be negative right?
Because you reinterpret it in
NSLogas a signed integer. You should use%uto see an unsigned value.There is no way for a function with variable number of arguments to know with certainty the type of the value that you pass. That is why
NSLogrelies on the format string to learn how many parameters you passed, and what their types are. If you pass a type that does not match the corresponding format specifier,NSLogwill trust the specifier and interpret your data according to it. Modern compilers may even warn you about it.