466 views

1 Answer

Best answer
2 votes
2 votes

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 
 

selected by

Related questions

0 votes
0 votes
2 answers
1
Debargha Mitra Roy asked Apr 16
126 views
#include <stdio.h int main() { int a[3] = {1, 3, 5, 7, 9, 11}; int *ptr = a[0]; ptr += sizeof(int); printf("%d", *ptr); return 0; }(Assume size of int to be $2$ bytes.)T...
0 votes
0 votes
2 answers
3
Debargha Mitra Roy asked Apr 10
148 views
What is the output of the below code?#include <stdio.h void main() { static int var = 5; printf("%d ", var ); if (var) main(); }a. 1 2 3 4 5b. 1c. 5 4 3 2 1d. Error
3 votes
3 votes
0 answers
4
RahulVerma3 asked Mar 22
165 views
My question is that can we use command line arguments without use of main function's parameters argc and *argv?