0
Why both printf gives different output?
int main(){ int a = 10; printf("%d",~a); printf("%u",~a); return 0; }
1 Answer
+ 2
Because of the difference in the format specifier (conversion specifier), the first call displays the negated value in signed integer format, while the second call displays the negated value in unsigned integer format.
Since the unsigned integer only supports positive values, a negative value is treated as maximum unsigned int value minus <a> -> (UINT32_MAX - <a>).