Suppose integers are stored in 2 bytes. Signed int has range -32768 to 32767 AND Unsigned integers has range 0 to 65535.
signed int i =-13;
Declares i to be signed integer and stores -13 in it.
unsigned int k= i%2;
Declares k to be unsigned integer and stores 65535 in it.
i % 2 = (-13) % 2 = -1 and -1 is equal to 65535 in unsigned type.
printf("%d\n",k);
k is of unsigned type while format specifier is %d (not %u) therefore berfore printing k is again typecast to signed i.e. -1
hence answer C