C Preprocessor

Q1:
What will be the output of the program?
#include<stdio.h>
#define FUN(i, j) i##j

int main()
{
    int va1=10;
    int va12=20;
    printf("%d\n", FUN(va1, 2));
    return 0;
}

A 10

B 20

C 1020

D 12

ANS:B - 20

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[] = "AptitudeCrack";

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

    return 0;
}

Output:
-------
AptitudeCrack

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 AptitudeCrack 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.



img not found
img

For help Students Orientation
Mcqs Questions

One stop destination for examination, preparation, recruitment, and more. Specially designed online test to solve all your preparation worries. Go wherever you want to and practice whenever you want, using the online test platform.