In the computer I used to execute this program. The output was 4294967293. That's because in my system,
sizeof (int ) is 4 bytes (32 bits), and negative numbers are represented in 2's complement form.
This means -4 will be represented as 11111111 11111111 11111111 11111100 (i.e. 30 one's followed by 2 zeroes).
Note that this number is 232 - 1 - 3. Before j gets added to 1, it will be converted to an unsigned integer. So, i + j is essentially adding 1 to 232- 1 - 3 which gives 4294967293.
Programming in C MCQ - I/O Operations
Let size of ( int ) = 1. So, -4 will be stored as 1 1 1 1 1 1 0 0.
Since we are adding unsigned and signed integers, the signed gets converted to unsigned.
So, i + j will become 1 1 1 1 1 1 0 1. We are trying to print this as an unsigned integer.
So, what is printed will be 28 - 1 - 2. So, log (x + 3) = 8 (i.e.. 8 * sizeof ( int)}.
k = -7. So, if 'k' is used as a Boolean variable, it will be treated as a true condition. So. ! k will be false i.e., 0. So, 0 < ? !k is actually 0 < 0. which is false. So. 0 will be printed.

