Open In App

ISRO | ISRO CS 2016 | Question 22

Like Article
Like
Save
Share
Report

What will be output of the following program? Assume that you are running this program in little-endian processor.




#include<stdio.h>
  
int main() {
    short a = 320;
    char * ptr;
    ptr = (char * ) & a;
    printf("%d", * ptr);
    return 0;
}


(A) 1
(B) 320
(C) 64
(D) Compilation error


Answer: (C)

Explanation: Big Endian Byte Order: The most significant byte of the data is placed at the byte with the lowest address. The rest of the data is placed in order in the next three bytes in memory.

Little Endian Byte Order: The least significant byte of the data is placed at the byte with the lowest address. The rest of the data is placed in order in the next three bytes in memory.

a= 320, 2-byte representation of a:

But as we are using little-endian format here, so it would actually stored in memory like :

ptr which is a character pointer, on dereferencing will output a single byte, i.e the first byte: (01000000)2 which is equal to 64.
So, the correct option is (C).


Quiz of this Question


Last Updated : 23 Mar, 2018
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads