C Programming - C Preprocessor - Discussion

Discussion Forum : C Preprocessor - Find Output of Program (Q.No. 2)
2.
What will be the output of the program?
#include<stdio.h>
#define SQUARE(x) x*x

int main()
{
    float s=10, u=30, t=2, a;
    a = 2*(s-u*t)/SQUARE(t);
    printf("Result = %f", a);
    return 0;
}
Result = -100.000000
Result = -25.000000
Result = 0.000000
Result = 100.000000
Answer: Option
Explanation:

The macro function SQUARE(x) x*x calculate the square of the given number 'x'. (Eg: 102)

Step 1: float s=10, u=30, t=2, a; Here the variable s, u, t, a are declared as an floating point type and the variable s, u, t are initialized to 10, 30, 2.

Step 2: a = 2*(s-u*t)/SQUARE(t); becomes,

=> a = 2 * (10 - 30 * 2) / t * t; Here SQUARE(t) is replaced by macro to t*t .

=> a = 2 * (10 - 30 * 2) / 2 * 2;

=> a = 2 * (10 - 60) / 2 * 2;

=> a = 2 * (-50) / 2 * 2 ;

=> a = 2 * (-25) * 2 ;

=> a = (-50) * 2 ;

=> a = -100;

Step 3: printf("Result=%f", a); It prints the value of variable 'a'.

Hence the output of the program is -100

Discussion:
18 comments Page 2 of 2.

Rupinderjit said:   1 decade ago
Don't the negative sign first be represented by 2's complement and then proceed afterwards?

Akhila said:   1 decade ago
But C language considers from left 2 right associative

2*(-50)/2*2
-100/2*2
-50*2
-100

( # e t # @ n said:   1 decade ago
But C language considers from left 2 right associative

2*(-50)/2*2
-100/2*2
-50*2
-100

Rancy said:   1 decade ago
Can anybody tell the order of operators according to there precedence ?

Rupinderjit said:   1 decade ago
@Chetan is quite right in his explanation.

Veera said:   9 years ago
Please explain the order of Operators.

Sri bhargavi said:   1 decade ago
What is the need of return statement?

Maithili said:   1 decade ago
But,
2*(-50)/2*2
= 2*(-25)/2
= -25


Post your comments here:

Your comments will be displayed after verification.