Question 1:#include<stdio.h>#define f(g,g2) g##g2int main(){ int var12 = 100; printf("%d", f(var,12)); getchar(); return 0;} |
Output: 100
#define TRUE 1
#define NULL 0
main () {
if(NULL)
puts("NULL");
else if(FALSE)
puts("TRUE");
else
puts("FALSE");
}
Answer:
TRUE
Explanation:Preprocessor doesn't replace the values given inside the double quotes.
The check by if condition is boolean value false so it goes to else. In
second if -1 is boolean value true hence "TRUE" is printed.
The operator ## is called “Token-Pasting” or “Merge” Operator or concatenation c preprocessor operator.It merges two tokens into one token. So, after preprocessing, the main function prints 100.
Question 2:
#define FALSE -1#define TRUE 1
#define NULL 0
main () {
if(NULL)
puts("NULL");
else if(FALSE)
puts("TRUE");
else
puts("FALSE");
}
Answer:
TRUE
Explanation:Preprocessor doesn't replace the values given inside the double quotes.
The check by if condition is boolean value false so it goes to else. In
second if -1 is boolean value true hence "TRUE" is printed.
No comments:
Post a Comment