0% found this document useful (0 votes)
52 views3 pages

WWW - Worldcolleges.info: Predict The Output or Error(s) For The Following

The document contains 6 code snippets with questions about the output or errors. For each snippet there is an explanation of the output or error. Some key points summarized: 1) A compiler error occurs when trying to modify a constant value with ++(*p). 2) The different ways of accessing array elements like s[i], *(i+s), etc. produce the same output of "mmmm aaaa nnnn". 3) Floating point values like 1.1 cannot be compared exactly with == and may produce unexpected results.

Uploaded by

sigthecute
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views3 pages

WWW - Worldcolleges.info: Predict The Output or Error(s) For The Following

The document contains 6 code snippets with questions about the output or errors. For each snippet there is an explanation of the output or error. Some key points summarized: 1) A compiler error occurs when trying to modify a constant value with ++(*p). 2) The different ways of accessing array elements like s[i], *(i+s), etc. produce the same output of "mmmm aaaa nnnn". 3) Floating point values like 1.1 cannot be compared exactly with == and may produce unexpected results.

Uploaded by

sigthecute
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

www.indiabix.

com

placementpapers.net/

kyapoocha.com

www.worldcolleges.info

Predict the output or error(s) for the following:


1.    void main()
{
            int  const * p=5;
            printf("%d",++(*p));
}

Answer:
Compiler error: Cannot modify a constant value. 
Explanation:    
p is a pointer to a "constant integer". But we tried to change the value of the "constant integer".

2.    main()
{
            char s[ ]="man";
            int i;
            for(i=0;s[ i ];i++)
            printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}

Answer:
                        mmmm
                       aaaa
                       nnnn
Explanation:
s[i], *(i+s), *(s+i), i[s] are all different ways of expressing the same idea. Generally  array name is the
base address for that array. Here s is the base address. i is the index number/displacement from
the base address. So, indirecting it with * is same as s[i]. i[s] may be surprising. But in the  case of 
C  it is same as s[i].

3.      main()
{
            float me = 1.1;
            double you = 1.1;
            if(me==you)
printf("I love U");
else
                        printf("I hate U");
}

Answer: 
I hate U

Explanation:
For floating point numbers (float, double, long double) the values cannot be predicted exactly.
Depending on the number of bytes, the precession with of the value  represented varies. Float takes
4 bytes and long double takes 10 bytes. So float stores 0.9 with less precision than long double.
Rule of Thumb: 
Never compare or at-least be cautious when using floating point numbers with relational operators
(== , >, <, <=, >=,!= ) . 

4.      main()
            {
            static int var = 5;
            printf("%d ",var--);
            if(var)
                        main();
            }

Answer:
54321

Explanation:
When static storage class is given, it is initialized once. The change in the value of a static variable
is retained even between the function calls. Main is also treated like any other ordinary function,
which can be called recursively. 

5.      main()
{
             int c[ ]={2.8,3.4,4,6.7,5};
             int j,*p=c,*q=c;
             for(j=0;j<5;j++) {
                        printf(" %d ",*c);
                        ++q;     }
             for(j=0;j<5;j++){
printf(" %d ",*p);
++p;     }
}
 
Answer:
                        2 2 2 2 2 2 3 4 6 5

Explanation: 
Initially pointer c is assigned to both p and q. In the first loop, since only q is incremented and not c
, the value 2 will be printed 5 times. In second loop p itself is incremented. So the values 2 3 4 6 5
will be printed.

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 other program with memory space allocated for it. Hence a linker error
has occurred .

You might also like