C Programming - C Preprocessor - Discussion

Discussion Forum : C Preprocessor - Find Output of Program (Q.No. 4)
4.
What will be the output of the program?
#include<stdio.h>
#define JOIN(s1, s2) printf("%s=%s %s=%s \n", #s1, s1, #s2, s2);
int main()
{
    char *str1="India";
    char *str2="BIX";
    JOIN(str1, str2);
    return 0;
}
str1=IndiaBIX str2=BIX
str1=India str2=BIX
str1=India str2=IndiaBIX
Error: in macro substitution
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
35 comments Page 1 of 4.

Sruthi said:   9 years ago
The rule is if the parameter name is preceded by a # in the macro expansion, the combination (of # and parameter) will be expanded into a quoted string with the parameter replaced by the actual argument. This can be combined with string concatenation to print desired the output.
(2)

Poovarasan said:   6 years ago
Not getting it. Please explain me.
(1)

Saravana said:   8 years ago
# is called Stringizing operator, whatever you pass (here variable name ) is converted to String, so result come with the variable name.
(1)

Jayesh said:   8 years ago
This because there we use the JOIN STRING FUNCTION in which the str1 print& then next str2join the str1.

Because we have to use join string function.
(1)

Natasha said:   1 decade ago
# is a stringizing operator. it will convert the argument into string.
eg #define df(a) printf(#a)
main()
{
int b=7;
df(b);
}

This will give result
b
as the statement df(b) was converted to printf("b");
(1)

Nandini said:   1 decade ago
#is name of the variable. So, if #str1 gives str1 content.

Sparsh610 said:   1 decade ago
It only works in macros ?

Or we can print them in main function too ?

Gaurav Kumar Garg said:   1 decade ago
@Sachin Kumar.

Its your choice you can also remove semicolon. without semi colon it will also work.

With semi colon in macro
You can also call JOIN(str1, str2) <--- no semicolon.

Avinash said:   1 decade ago
# symbol is used to print the actual arguments that are passed to function.

Sunil Kothari said:   1 decade ago
#include<stdio.h>
#define cube(x) (x*x*x)

void main()

{
int a,b =3;
a= cube(++b);
printf("%d \n %d", a, b);
}

Output:
-------
150
6

Please explain above program?


Post your comments here:

Your comments will be displayed after verification.