Sail E0 Webinar
Question


What is the output of the program in Turbo C (in DOS 16-bit OS)?


#include<stdio.h>
int main()
{
char *s1;
char far *s2;
char huge *s3;
printf("%d, %d, %d\n", sizeof(s1), sizeof(s2), sizeof(s3));
return 0;
}
Options:
A .  2, 4, 6
B .  4, 4, 2
C .  2, 4, 4
D .  2, 2, 2
Answer: Option C

Any pointer size is 2 bytes. (only 16-bit offset)
So, char *s1 = 2 bytes.
So, char far *s2; = 4 bytes.
So, char huge *s3; = 4 bytes.
A far, huge pointer has two parts: a 16-bit segment value and a 16-bit offset value.

Since C is a compiler dependent language, it may give different output in other platforms. 

The above program works fine in Window (TurboC), but error in Linux (GCC Compiler).




Was this answer helpful ?
Next Question

Submit Solution

Your email address will not be published. Required fields are marked *

Latest Videos

Latest Test Papers