Free CSC Scholarship support for 2018-19

### Author Topic: The following program fragment unsigned i = 1;  (Read 895 times)

#### mechanic

• Engineer
• Hero Engineer
• Posts: 3076
##### The following program fragment unsigned i = 1;
« on: February 28, 2017, 07:45:59 AM »
Question: The following program fragment

unsigned i = 1;
int j = -4;
printf("%u", i + j);

prints

Options are:

A. garbage
B. -3
C. an integer that changes from machine to machine
D. none of the above

C. an integer that changes from machine to machine

Explanation:

In the computer I used to excute 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 11111100 (i.e. 30 one's followed by 2 zeroes). Note that this number is 232 -1 -3. before j gets added to i, it will be converted to an unsigned integer, so, i + j is essentially adding 1 to 232 - 1 - 3, which gives 4294967293.

#### Engineering, Computer, Scholarship and SEO Support Forum

##### The following program fragment unsigned i = 1;
« on: February 28, 2017, 07:45:59 AM »