250+ TOP MCQs on Declarations and Answers

C Objective Questions on “Declarations”. One shall practice these Objective Questions to improve their C programming skills needed for various interviews (campus interviews, walk-in interviews, company interviews), placements, entrance exams and other competitive exams. These questions can be attempted by anyone focusing on learning C Programming language. They can be a beginner, fresher, engineering graduate or an experienced IT professional. Our C Objective Questions come with the detailed explanation of the answers which helps in better understanding of C concepts.

Here is a listing of C Objective Questions on “Declarations” along with answers, explanations and/or solutions:

1. What will be the output of the following C code?

  1.     #include 
  2.     void foo(const int *);
  3.     int main()
  4.     {
  5.         const int i = 10;
  6.         printf("%d ", i);
  7.         foo(&i);
  8.         printf("%d", i);
  9.  
  10.     }
  11.     void foo(const int *i)
  12.     {
  13.         *i = 20;
  14.     }

a) Compile time error
b) 10 20
c) Undefined value
d) 10
Answer: a
Clarification: Cannot change a const type value.
Output:
$ cc pgm1.c
pgm1.c: In function ‘foo’:
pgm1.c:13: error: assignment of read-only location ‘*i’

2. What will be the output of the following C code?

  1.     #include 
  2.     int main()
  3.     {
  4.         const int i = 10;
  5.         int *ptr = &i;
  6.         *ptr = 20;
  7.         printf("%dn", i);
  8.         return 0;
  9.     }

a) Compile time error
b) Compile time warning and printf displays 20
c) Undefined behaviour
d) 10
Answer: b
Clarification: Changing const variable through non-constant pointers invokes compiler warning.
Output:
$ cc pgm2.c
pgm2.c: In function ‘main’:
pgm2.c:5: warning: initialization discards qualifiers from pointer target type
$ a.out
20

3. What will be the output of the following C code?

  1.     #include 
  2.     int main()
  3.     {
  4.         j = 10;
  5.         printf("%dn", j++);
  6.         return 0;
  7.     }

a) 10
b) 11
c) Compile time error
d) 0
Answer: c
Clarification: Variable j is not defined.
Output:
$ cc pgm3.c
pgm3.c: In function ‘main’:
pgm3.c:4: error: ‘j’ undeclared (first use in this function)
pgm3.c:4: error: (Each undeclared identifier is reported only once
pgm3.c:4: error: for each function it appears in.)

4. Will the following C code compile without any error?

  1.     #include 
  2.     int main()
  3.     {
  4.         for (int k = 0; k < 10; k++);
  5.             return 0;
  6.     }

a) Yes
b) No
c) Depends on the C standard implemented by compilers
d) Error
Answer: c
Clarification: Compilers implementing C90 do not allow this, but compilers implementing C99 allow it.
Output:
$ cc pgm4.c
pgm4.c: In function ‘main’:
pgm4.c:4: error: ‘for’ loop initial declarations are only allowed in C99 mode
pgm4.c:4: note: use option -std=c99 or -std=gnu99 to compile your code

5. Will the following C code compile without any error?

  1.     #include 
  2.     int main()
  3.     {
  4.         int k;
  5.         {
  6.             int k;
  7.             for (k = 0; k < 10; k++);
  8.         }
  9.     }

a) Yes
b) No
c) Depends on the compiler
d) Depends on the C standard implemented by compilers
Answer: a
Clarification: There can be blocks inside the block. But within a block, variables have only block scope.
Output:
$ cc pgm5.c

6. Which of the following declaration is not supported by C?
a) String str;
b) char *str;
c) float str = 3e2;
d) Both String str; & float str = 3e2;
Answer: a
Clarification: It is legal in Java, but not in C.

7. Which of the following format identifier can never be used for the variable var?

  1.     #include 
  2.     int main()
  3.     {
  4.         char *var = "Advanced Training in C by .com";
  5.     }

a) %f
b) %d
c) %c
d) %s
Answer: a
Clarification: %c can be used to print the indexed position.
%d can still be used to display its ASCII value.
%s is recommended.
%f cannot be used for the variable var.

Leave a Reply

Your email address will not be published. Required fields are marked *