Home » C Programming » C Preprocessor

What will be the output of the program? #include #define FUN(i, j) i##j int main() { int va1=10; int va12=20; printf("%d\n", FUN(va1, 2)); return 0; }

Correct Answer: 20

Explanation:

The following program will make you understand about ## (macro concatenation) operator clearly.


#include<stdio.h>
#define FUN(i, j) i##j

int main()
{
    int First  	= 10;
    int Second  = 20;

    char FirstSecond[] = "CuriousTab";

    printf("%s\n", FUN(First, Second) );

    return 0;
}

Output:
-------
CuriousTab

The preprocessor will replace FUN(First, Second) as FirstSecond.


Therefore, the printf("%s\n", FUN(First, Second) ); statement will become as printf("%s\n", FirstSecond );


Hence it prints CuriousTab as output.


Like the same, the line printf("%d\n", FUN(va1, 2)); given in the above question will become as printf("%d\n", va12 );.


Therefore, it prints 20 as output.


← Previous Question Next Question→

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion