Home / C Programming / Complicated Declarations :: Discussion

Discussion :: Complicated Declarations

  1. What will be the output of the program?

    #include
     typedef unsigned long int uli;   
     typedef uli u; 
    
     int main() 
     {   
         uli a;  
         u b = -1;  
         a = -1;   
         printf("%lu, %lu", a, b);       
         return 0;
     } 
    

  2. A.

    4343445454, 4343445454

    B.

    4545455434, 4545455434

    C.

    4294967295, 4294967295

    D.

    Garbage values

    View Answer

    Workspace

    Answer : Option C

    Explanation :

    The system will treat the negative numbers with 2's complement method.

    For 'long int' system will occupy 4 bytes (32 bits).

    Therefore,

    Binary 1 : 00000000 00000000 00000000 00000001

    To represent -1, system uses the 2's complement value of 1. Add 1 to the 1's complement result to obtain 2's complement of 1.

    So, First take 1's complement of binary 1 (change all 0s to 1s and all 1s to 0s)

    1's complement of Binary 1:

    11111111 11111111 11111111 11111110

    2's complement of Binary 1: (Add 1 with the above result)

    11111111 11111111 11111111 11111111

     

    In HexaDecimal

     

    11111111 11111111 11111111 11111111 = FFFF FFFF FFFF FFFF

    In Unsigned Integer

    11111111 11111111 11111111 11111111 = 4294967295.


Be The First To Comment