**Question: If the following program fragment (assume negative numbers are stored in 2's complement form)**

unsigned i = 1;

int j = -4 ;

printf["%u", i + j);

prints x, then printf{"%d", 8*sizeof(int)};

outputs an integer that is same as (log in the answers are to the base two)

options are:

A. an unpredictable value

B. 8*log{x+3}

C. log (x+3)

D. none of the above

**Correct answer is:**

C. log (x+3)

**Explanation:**

Let sizeof(int) = 1. so -4 will be stored as 11111100. since we are adding unsigned and signed integers, the signed gets converted to unsigned, so, i + j will become 11111101. 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}).