Predict the output (or) error(s) for the following 6-10

6.     main()
            {
            extern int i;
            i=20;
            printf("%d",i);
            }
Answer:
            Linker Error : Undefined symbol ' I '
Explanation:
            extern storage class in the following declaration, extern int i; specifies to the compiler that the memory for i is  allocated in some other program and that address will be given to the current Program at the time of linking. But linker finds that no other variable of name i is available in any output.

7.     main()
            {
            int i=-1,j=-1,k=0,l=2,m;
            m=i++&&j++&&k++||l++;
            printf("%d %d %d %d %d",i,j,k,l,m);
            }
Answer:
            0 0 1 3 1
Explanation :
            Logical operations always give a result of 1 or 0 . And also the logical AND (&&) operator has higher priority over the logical OR (||) operator. So the expression ‘i++ && j++ && k++’ is executed first. The result of this expression is 0 (-1 && -1 && 0 = 0). Now the expression is 0 || 2 which evaluates to 1 (because OR operator always gives 1 except for ‘0 || 0’ combination for
which it gives 0). So the value of m is 1. The values of other variables are also incremented by 1.

8.    main()
            {
            char *p;
            printf("%d %d ",sizeof(*p),sizeof(p));
            }
Answer:
            1 2
Explanation:
            The sizeof() operator gives the number of bytes taken by its operand. P is a character pointer, which needs one byte for storing its value (a character). Hence sizeof(*p) gives a value of 1. Since it needs two bytes to store the address of the character pointer sizeof(p) gives 2.her program with memory space allocated for it. Hence a linker error has occurred

9.     main()
            {
            int i=3;
            switch(i)
            {
            default:printf("zero");
            case 1: printf("one");
            break;
            case 2:printf("two");
            break;
            case 3: printf("three");
            break;
            }
            }

Answer :
            Three
Explanation :
            The default case can be placed anywhere inside the loop. It is executed only when all other cases doesn't match.

10.    main()
            {
            printf("%x",-1<<4);
            }
Answer:
            fff0
Explanation :
            -1 is internally represented as all 1's. When left shifted four times the least significant 4 bits are filled with 0's.The %x format specifier specifies that the integer value be printed as a hexadecimal value.

No comments:

Post a Comment

Thank you for using this blog.