0

What will be the output? And why?

#include<stdio.h> #define square(x) (x * x) int main() { int x, y=2; x= square(y+1); printf("%d\n",x); return 0; }

10th Feb 2019, 6:28 AM
rahul negi
rahul negi - avatar
2 ответов
+ 2
The output will be 5 The line x = square(y + 1); Gers replaced by "square" macro: x = y + 1 * y + 1; => x = y + y + 1; => x = 2 + 2 + 1; ≠> x = 5 If yoi want square(x) gives the "right" answe, then you must add ( ) like this: #define square(x) (x)*(x) Now the line will be replaced by: x = (y + 1) * (y + 1);
10th Feb 2019, 8:58 AM
unChabon
unChabon - avatar
+ 1
Given that square (x) which considered as (y+1) and macro has (x*x) Since we know x=y+1; (X*X) means ( y+1*y+1 ) which is not equal to (y+1)*(y+1) ; so answer will be y+1*y+1=y+y+1; Given:y=2; Then 2y+1 gives [2*2+1=5]
10th Feb 2019, 10:20 AM
Vijay Pullela
Vijay Pullela - avatar