(1) What will be output of following code?
#include<stdio.h>
#define max 10
int main() {
int i;
i=++max;
printf("%d",i);
return 0;
}
(2) What will be output of following code?
#include<stdio.h>
#define max 10+2
int main() {
int i;
i=max*max;
printf("%d",i);
return 0;
}
(3) What will be output of following code?
#include<stdio.h>
#define A 4-2
#define B 3-1
int main() {
int ratio=A/B;
printf("%d ",ratio);
return 0;
}
(4) What will be output of following code?
#include<stdio.h>
#define MAN(x,y) (x)>(y)?(x):(y)
int main() {
int i=10,j=9,k=0;
k=MAN(i++,++j);
printf("%d %d %d",i,j,k);
return 0;
}
(5) What will be output of following code?
#include<stdio.h>
#define START main() {
#define PRINT printf("*******");
#define END }
START
PRINT
END
(6) What will be output of following code?
#define CUBE(x) (x*x*x)
#define M 5
#define N M+1
#define PRINT printf("Daarks Solutions & Services");
int main() {
int volume =CUBE(3+2);
printf("%d %d ",volume,N);
PRINT
return 0;
}
Solution section
(1)output: compiler error.
Explanation:
Here max is preprocessor macro symbol which
process first before
process first before
the actual compilation. First preprocessor
replace the symbol to its
replace the symbol to its
value in entire the program before the compilation.
So in this program max will be replaced by 10 before
compilation.
compilation.
Thus program will be converted like this:
int main() {
int i;
i=++10;
printf("%d",i);
return 0;
}
In this program we are trying to increment a constant
symbol.
symbol.
Meaning of ++10 is:
10=10+1
or 10=11
Which is error because we cannot assign constant value to another
constant value .Hence compiler will give error.
(2)
Output: 32
Explanation:
Here max is preprocessor macro symbol which process
first before
first before
the actual compilation start. Preprocessor replace
the symbol to
the symbol to
its value in entire the program before the compilation.
So in this program max will be replaced by 10+2 before
compilation.
compilation.
Thus program will be converted as:
int main() {
int i;
i=10+2*10+2;
printf("%d",i);
return 0;
}
now i=10+2*10+2
i=10+20+2
i=32
(3)
Output: 3
Explanation:
A and B are preprocessor macro symbol which process first
before the actual
before the actual
compilation start. Preprocessor replace the symbol to its value in
entire the program before the compilation.
So in this program A and B will be replaced by 4-2 and 3-1 respectively
before compilation. Thus program will be converted as:
int main() {
int ratio=4-2/3-1;
printf("%d ",ratio);
return 0;
}
Here ratio=4-2/3-1
ratio=4-0-1
ratio=3
(4)
Output: 11 11 11
Explanation:
Preprocessor’s macro which process first before the actual compilation.
Thus program will be converted as:
int main() {
int i=10,j=9,k=0;
k=(i++)>(++j)?(i++):(++j);
printf("%d %d %d",i,j,k);
return 0;
}
now k=(i++)>(++j)?(i++):(++j);
first it will check the condition
(i++)>(++j)
i++ i.e. when postfix is used with variable in
expression then
expression then
expression is evaluated first with original value
then variable
then variable
is incremented
Or 10>10
This condition is false.
Now i = 10+1 = 11
There is rule, only false part will execute after? i.e. ++j, i++ will be not execute.
So after ++j
j=10+1=11;
And k will assign value of j .so k=11;
(5)
Output: *******
Explanation:
This program will be converted as:
main() {
printf("*******");
}
(6)
Output: 17 6
Explanation: This program will be converted as:
int main() {
int volume =(3+2*3+2*3+2);
printf("%d %d ",volume,5+1);
printf("Daarks Solutions & Services");
return 0;
}
sir in Q.6 why the string "RITESH" is not appear as a output.....i think it will come ...give me explaination