Home »
Aptitude Questions and Answers »
C Aptitude Questions and Answers
C Pre-Processor - Aptitude Questions & Answers
C programming Pre-processor Aptitude Questions and Answers: In this section you will find C Aptitude Questions and Answers on Pre-processor topics like #define, #undef, #if, #endif etc.
1) What will be the output of following program ?
#include <stdio.h>
int main()
{
#ifdef debug
printf("Start debugging...");
#endif
printf("IncludeHelp");
return 0;
}
- Start debugging...IncludeHelp
- IncludeHelp
- Error
- debug
Correct Answer - 2
IncludeHelp
debug macro is not define.
2) What will be the output of following program ?
#include <stdio.h>
#define MAX 100
int main()
{
#define MAX 20
printf("MAX=%d...",MAX);
return 0;
}
- Error
- MAx=100...
- MAx=20...
- MAX=10020
Correct Answer - 3
MAX=20...
A macro can be redefine any where.
3) What will be the output of following program ?
#include <stdio.h>
#define FUN(x) x*x
int main()
{
int val=0;
val=128/FUN(8);
printf("val=%d",val);
return 0;
}
- 2
- 128
- 64
- 1
Correct Answer - 2
128
Consider the expression...
val=128/FUN(8) => will expand val=128/8*8
According to the operator associativity "/" will evaluate first so expression will
be val=(128/8)*8=>128
4) What will be the output of following program ?
#include <stdio.h>
#define FUN(x,y) x##y
int main()
{
int a1=10,a2=20;
printf("%d...%d",FUN(a,1),FUN(a,2));
return 0;
}
- Error
- 10...10
- 20...20
- 10...20
Correct Answer - 4
10...20
we can concatenate variable like this x##y .. (a##1=a1).
5) What will be the output of following program ?
#include <stdio.h>
#define LARGEST(x,y) (x>=y)?x:y
int main()
{
int a=10,b=20,l=0;
l=LARGEST(a++,b++);
printf("a=%d,b=%d,largest=%d",a,b,l);
return 0;
}
- a=10,b=20,largest=20
- a=11,b=21,largest=20
- a=11,b=21,largest=21
- a=11,b=22,largest=21
Correct Answer - 4
a=11,b=22,largest=21
Consider the expression
(x>=y)?x:y => will expand with values a++ and b++
(a++ >= b++)? a++ : b++; here (10 >= 20 )?11:21; [largest will be 21..]
Since b++ is executing 2 times so value of b will be 22.
6) What will be the output of following program ?
#include <stdio.h>
#define OFF 0
#if debug == OFF
int a=11;
#endif
int main()
{
int b=22;
printf("%d...%d",a,b);
return 0;
}
- 11...22
- Error
- 11...11
- 22...22
Correct Answer - 1
11...22
Undefined macro has 0, you can use undefined macro name in #if...#endif.
7) What will be the output of following program ?
#include <stdio.h>
#define TEXT IncludeHelp
int main()
{
printf("%s",TEXT);
return 0;
}
- IncludeHelp
- TEXT
- Error
- TEXT IncludeHelp
Correct Answer - 3
Error : 'IncludeHelp' undeclared identifier.
Consider the statement printf("%s",TEXT); , TEXT is a macro will expand like
printf("%s",IncludeHelp);, in this statement IncludeHelp should be an identifier.
8) What will be the output of following program ?
#include <stdio.h>
#define VAR1 VAR2+10
#define VAR2 VAR1+20
int main()
{
printf("%d",VAR1);
return 0;
}
- VAR2+10
- VAR1+20
- Error
- 10
Correct Answer - 3
Error : 'VAR1' undeclared identifier.
9) What will be the output of following program ?
#include <stdio.h>
#define SUM(x,y) int s; s=x+y; printf("sum=%d\n",s);
int main()
{
SUM(10,20);
return 0;
}
- sum=30
- 10,20
- Error
- sum=0
Correct Answer - 1
sum=30
Here SUM(10,20) will be expanded as int s; s=10+20; printf("sum=%d",s);
Hence sum=30 will print.
In same example, if you call SUM() again, you will get an error 's' redefinition.
10) What will be the output of following program ?
#include <stdio.h>
#define MAX 99
int main()
{
printf("%d...",MAX);
#undef MAX
printf("%d",MAX);
return 0;
}
- 99...0
- 99...99
- Error
- MAX...MAX
Correct Answer - 3
Error: 'MAX' undeclared identifier
After #undef you can not use that macro.