Skip to content
Related Articles

Related Articles

Improve Article

Output of C programs | Set 62 (Declaration & Initialization)

  • Difficulty Level : Medium
  • Last Updated : 07 Jul, 2021

Prerequisite : Declaration & Initialization in C programming
Q1. Consider the following code: 
 

C




#include <stdio.h>
void main()
{
    extern int i;
    i = 20;
    printf("%d", sizeof(i));
}

What would be the output of the above code? 
A.
B.
C. Would vary from complier to complier. 
D. Error. 
 

Output: D

Error: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int 
Explanation: 
Here, the compiler generates the error as extern int i is a declaration and not a definition.
Q2. Consider the following code: 
 

C




#include <stdio.h>
void main()
{
    extern int fun(float);
    int a;
    a = fun(3.14);
    printf("%d", a);
}
int fun(aa) float aa;
{
    return ((int)aa);
}

What would be the output of the above code? 
A. Error. 
B. 3.14 
C.
D. 3
 

Output: A

Error: conflicting types for ‘fun’ 
Explanation: The error occurs because we have mixed the ANSI prototype with K & R style of function definition. When we use ANSI prototype for a function and pass a float to the function it is promoted to a double. When the function accepts the double into a float a type mismatch occurs hence the error.
Q3. Consider the following code: 
 



C




#include <stdio.h>
void main()
{
    struct geeks {
        char name;
        int age;
        float sal;
    } struct geeks g = { "GEEKS" };
    printf("%d %f", g.age, g.sal);
}

What would be the output of the above code? 
A. Garbage Value 
B. 0 0.000000 
C. Would vary from complier to complier. 
D. Error.
 

Output: B
  0 0.000000

Explanation: 
When an automatic structure is partially initialised, the remaining elements of the structure are initialised to 0.
Q4. Consider the following code: 
 

C




#include <stdio.h>
void main()
{
    int x = 10, y = 20, z = 5, i;
    i = x < y < z;
    printf("%d", i);
}

What would be the output of the above code? 
A.
B.
C.
D. 10
 

Output: C
  1

Explanation: 
Since x<y turns out to be true it is replaced by 1. This 1 is then compared with 5. Since this condition also turns out to be true it is replaced by 1. This 1 is then assigned to i
Q5. Consider the following code: 
 

C




#include <stdio.h>
void main()
{
    enum status { pass,
                  fail,
                  atkt };
    enum status stud1, stud2, stud3;
    stud1 = pass;
    stud2 = fail;
    stud3 = atkt;
    printf("%d %d %d", stud1, stud2, stud3);
}

What would be the output of the above code? 
A. 1 2 3 
B. pass fail atkt 
C. 1 2 0 
D. 0 1 2
 

Output: D
0 1 2

Explanation: 
Enum elements always take values like 0, 1, 2, 3, …. etc
This article is contributed by Abhishek Sharma. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Attention reader! Don’t stop learning now. Join the First-Step-to-DSA Course for Class 9 to 12 students , specifically designed to introduce data structures and algorithms to the class 9 to 12 students




My Personal Notes arrow_drop_up
Recommended Articles
Page :