Home » C Programming » Declarations and Initializations

What is the output of the program in Turbo C (in DOS 16-bit OS)? #include int main() { char *s1; char far *s2; char huge *s3; printf("%d, %d, %d\n", sizeof(s1), sizeof(s2), sizeof(s3)); return 0; }

Correct Answer: 2, 4, 4

Explanation:

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 Windows (TurboC), but error in Linux (GCC Compiler).


← Previous Question Next Question→

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion