Home / C Programming / Declarations and Initializations :: Discussion

Discussion :: Declarations and Initializations

  1. 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; 
    } 
    

  2. A.

    2, 4, 6

    B.

    4, 4, 2

    C.

    2, 4, 4

    D.

    2, 2, 2

    View Answer

    Workspace

    Answer : Option C

    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).


Be The First To Comment