Macro & Preprocessor
uestion 1
WRONG
|
#include <stdio.h>#define PRINT(i, limit) do \ { \ if (i++ < limit) \ { \ printf("GeeksQuiz\n"); \ continue; \ } \ }while(1)int main(){ PRINT(0, 3); return 0;} |
1
| |
3
| |
4
| |
Compile-time error
|
Discuss it
Question 1 Explanation:
The PRINT macro gets expanded at the pre-processor time i.e. before the compilation time. After the macro expansion, the if expression becomes: if (0++ < 3). Since 0 is a constant figure and represents only r-value, applying increment operator gives compile-time error: lvalue required. lvalue means a memory location with some address.
Assume that size of an integer is 32 bit. What is the output of following program?
#include<stdio.h>struct st{ int x; static int y;};int main(){ printf("%d", sizeof(struct st)); return 0;} |
4
| |
8
| |
Compiler Error
| |
Runtime Error
|
Discuss it
Question 2 Explanation:
In C, struct and union types cannot have static members. In C++, struct types are allowed to have static members, but union cannot have static members in C++ also.
Question 10
WRONG
|
Predict the output of following C program
#include<stdio.h>struct Point{ int x, y, z;};int main(){ struct Point p1 = {.y = 0, .z = 1, .x = 2}; printf("%d %d %d", p1.x, p1.y, p1.z); return 0;} |
Compiler Error
| |
2 0 1
| |
0 1 2
| |
2 1 0
|
Discuss it
Question 11
CORRECT
|
What is the use of "#pragma once"?
Used in a header file to avoid its inclusion more than once.
| |
Used to avoid multiple declarations of same variable.
| |
Used in a c file to include a header file at least once.
| |
Used to avoid assertions
|
Question 10
WRONG
|
Which file is generated after pre-processing of a C program?
.p
| |
.i
| |
.o
| |
.m
|
Discuss it
Question 10 Explanation:
After the pre-processing of a C program, a .i file is generated which is passed to the compiler for compilation.
Question 9
CORRECT
|
# include <iostream># include <string.h>using namespace std;struct Test{ char str[20];};int main(){ struct Test st1, st2; strcpy(st1.str, "GeeksQuiz"); st2 = st1; st1.str[0] = 'S'; cout << st2.str; return 0;} |
Segmentation Fault
| |
SeeksQuiz
| |
GeeksQuiz
| |
Compiler Error
|
Discuss it
Question 9 Explanation:
Array members are deeply copied when a struct variable is assigned to another one. SeeAre array members deeply copied? for more details.
uestion 5
WRONG
|
#include<stdio.h> struct st { int x; struct st next; }; int main() { struct st temp; temp.x = 10; temp.next = temp; printf("%d", temp.next.x); return 0; } |
Compiler Error
| |
10
| |
Runtime Error
| |
Garbage Value
|
Discuss it
Question 5 Explanation:
A structure cannot contain a member of its own type because if this is allowed then it becomes impossible for compiler to know size of such struct. Although a pointer of same type can be a member because pointers of all types are of same size and compiler can calculate size of struct
Question 6
CORRECT
|
Which of the following operators can be applied on structure variables?
Equality comparison ( == )
| |
Assignment ( = )
| |
Both of the above
| |
None of the above
|
Discuss it
Question 6 Explanation:
A structure variable can be assigned to other using =, but cannot be compared with other using ==
Question 7
CORRECT
|
union test{ int x; char arr[8]; int y;};int main(){ printf("%d", sizeof(union test)); return 0;} |
12
| |
16
| |
8
| |
Compiler Error
|
Discuss it
Question 7 Explanation:
When we declare a union, memory allocated for a union variable of the type is equal to memory needed for the largest member of it, and all members share this same memory space. In above example, "char arr[8]" is the largest member. Therefore size of union test is 8 bytes.
union test{ int x; char arr[4]; int y;};int main(){ union test t; t.x = 0; t.arr[1] = 'G'; printf("%s", t.arr); return 0;} |
Nothing is printed
| |
G
| |
Garbage character followed by 'G'
| |
Garbage character followed by 'G', followed by more garbage characters
| |
Compiler Error
|
Question 1
WRONG
|
Which of the following is not a storage class specifier in C?
auto
| |
register
| |
static
| |
extern
| |
volatile
| |
typedef
|
Discuss it
Question 1 Explanation:
volatile is not a storage class specifier. volatile and const are type qualifiers.
jsadjashdas
No comments:
Post a Comment