logo

CuriousTab

CuriousTab

Discussion


Home C Programming Structures, Unions, Enums See What Others Are Saying!
  • Question
  • What will be the output of the program?
    #include<stdio.h>
    
    int main()
    {
        struct value
        {
            int bit1:1;
            int bit3:4;
            int bit4:4;
        }bit={1, 2, 13};
    
        printf("%d, %d, %d\n", bit.bit1, bit.bit3, bit.bit4);
        return 0;
    }
    


  • Options
  • A. 1, 2, 13
  • B. 1, 4, 4
  • C. -1, 2, -3
  • D. -1, -2, -13

  • Correct Answer
  • -1, 2, -3 

    Explanation
    Note the below statement inside the struct:

    int bit1:1; --> 'int' indicates that it is a SIGNED integer.

    For signed integers the leftmost bit will be taken for +/- sign.

    If you store 1 in 1-bit field:

    The left most bit is 1, so the system will treat the value as negative number.

    The 2's complement method is used by the system to handle the negative values.

    Therefore, the data stored is 1. The 2's complement of 1 is also 1 (negative).

    Therefore -1 is printed.


    If you store 2 in 4-bits field:

    Binary 2: 0010 (left most bit is 0, so system will treat it as positive value)

    0010 is 2

    Therefore 2 is printed.


    If you store 13 in 4-bits field:

    Binary 13: 1101 (left most bit is 1, so system will treat it as negative value)

    Find 2's complement of 1101:

    1's complement of 1101 : 0010
    2's complement of 1101 : 0011 (Add 1 to the result of 1's complement)

    0011 is 3 (but negative value)

    Therefore -3 is printed.

    More questions

    • 1. A function that receives variable number of arguments should use va_arg() to extract the last argument from the variable argument list.

    • Options
    • A. True
    • B. False
    • Discuss
    • 2. Bitwise & can be used to check if more than one bit in a number is on.

    • Options
    • A. True
    • B. False
    • Discuss
    • 3. The preprocessor can trap simple errors like missing declarations, nested comments or mismatch of braces.

    • Options
    • A. True
    • B. False
    • Discuss
    • 4. It is necessary that a header files should have a .h extension?

    • Options
    • A. Yes
    • B. No
    • Discuss
    • 5. Bitwise | can be used to set multiple bits in number.

    • Options
    • A. Yes
    • B. No
    • Discuss
    • 6. Bitwise & can be used to check if a bit in number is set or not.

    • Options
    • A. True
    • B. False
    • Discuss
    • 7. A pointer union CANNOT be created

    • Options
    • A. Yes
    • B. No
    • Discuss
    • 8. What will be the output of the program?
      #include<stdio.h>
      #include<stdlib.h>
      
      int main()
      {
          union test
          {
              int i;
              float f;
              char c;
          };
          union test *t;
          t = (union test *)malloc(sizeof(union test));
          t->f = 10.10f;
          printf("%f", t->f);
          return 0;
      }
      

    • Options
    • A. 10
    • B. Garbage value
    • C. 10.100000
    • D. Error
    • Discuss
    • 9. What will be the output of the program?
      #include<stdio.h>
      int main()
      {
          int x=4, y, z;
          y = --x;
          z = x--;
          printf("%d, %d, %d\n", x, y, z);
          return 0;
      }
      

    • Options
    • A. 4, 3, 3
    • B. 4, 3, 2
    • C. 3, 3, 2
    • D. 2, 3, 3
    • Discuss
    • 10. Functions cannot return a floating point number

    • Options
    • A. Yes
    • B. No
    • Discuss


    Comments

    There are no comments.

Enter a new Comment