C Programming - C Preprocessor - Discussion

Discussion Forum : C Preprocessor - Find Output of Program (Q.No. 9)
9.
What will be the output of the program?
#include<stdio.h>
#define FUN(arg) do\
                 {\
                    if(arg)\
                        printf("IndiaBIX...", "\n");\
                  }while(--i)

int main()
{
    int i=2;
    FUN(i<3);
    return 0;
}
IndiaBIX...
IndiaBIX...
IndiaBIX
IndiaBIX... IndiaBIX...
Error: cannot use control instructions in macro
No output
Answer: Option
Explanation:

The macro FUN(arg) prints the statement "IndiaBIX..." untill the while condition is satisfied.

Step 1: int i=2; The variable i is declared as an integer type and initialized to 2.

Step 2: FUN(i<3); becomes,

do
{
    if(2 < 3)
    printf("IndiaBIX...", "\n");
}while(--2)

After the 2 while loops the value of i becomes '0'(zero). Hence the while loop breaks.

Hence the output of the program is "IndiaBIX... IndiaBIX..."

Discussion:
22 comments Page 1 of 3.

Shwetal said:   2 years ago
If there is printf("India","bix");
the output will be = India.

And there would be a warning -too many arguments;
The second " " is simply ignored.
(1)

Shubh said:   5 years ago
Why there is \ in every line in macro.

Shrividya said:   7 years ago
I got it 0 indicates false in programming language.

Shrividya said:   7 years ago
Even 0 is less than 3 than why does while loop break?

Kalyan babu said:   7 years ago
Yes, I agree @Abhijit, @Prashant.

Prashant said:   8 years ago
Yes, I agree @Abhijit.

Abhijit said:   8 years ago
do
{
if(2 < 3)
printf("IndiaBIX...", "\n");
}while(--2)

There is a "\n". it should have taken printf to the next line. I am a little bit confuse, please someone explain it.
(3)

Hosam said:   8 years ago
How could they use (i) at preprocessing time before it declared in main at compile time?

Purnima said:   8 years ago
In while(0) we will just check the value of I which is zero so loops terminate. We are not checking i<3.

Nagalakshmi said:   9 years ago
Yea it is correct, here while(0) becomes an infinite loop. That's why the condition became fail at i=0.


Post your comments here:

Your comments will be displayed after verification.