C Preprocessor - Programming

Q1:

What will be the output of the program?
#include<stdio.h>
#define CUBE(x) (x*x*x)

int main()
{
    int a, b=3;
    a = CUBE(b++);
    printf("%d, %d\n", a, b);
    return 0;
}

A 9, 4

B 27, 4

C 27, 6

D Error

ANS:C - 27, 6

The macro function CUBE(x) (x*x*x) calculates the cubic value of given number(Eg: 103.) Step 1: int a, b=3; The variable a and b are declared as an integer type and varaible b id initialized to 3. Step 2: a = CUBE(b++); becomes => a = b++ * b++ * b++; => a = 3 * 3 * 3; Here we are using post-increement operator, so the 3 is not incremented in this statement. => a = 27; Here, 27 is store in the variable a. By the way, the value of variable b is incremented by 3. (ie: b=6) Step 3: printf("%d, %d\n", a, b); It prints the value of variable a and b. Hence the output of the program is 27, 6.