C | Pointer Basics | Question 7
#include<stdio.h> int main() { int a; char *x; x = ( char *) &a; a = 512; x[0] = 1; x[1] = 2; printf ( "%d\n" ,a); return 0; } |
What is the output of above program?
(A) Machine dependent
(B) 513
(C) 258
(D) Compiler Error
Answer: (A)
Explanation: Output is 513 in a little endian machine. To understand this output, let integers be stored using 16 bits. In a little endian machine, when we do x[0] = 1 and x[1] = 2, the number a is changed to 00000001 00000010 which is representation of 513 in a little endian machine.
Please Login to comment...