Stringify Operators
Stringify operator #
The # operator is used to convert a macro argument into a string literal. This means that if you pass any value to the macro, it will be converted to a string.
Here is an example of usage:
main.c
123456789#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); return 0; }
The #x
operator in the SQR macro is used to turn the x
argument into a string. When you pass the j
variable to the macro, #x
produces the string "j" (i.e. the variable name), not its value.
Thus, in the line
printf("Square " #x " = %d\n", )(x)*(x)));
#x
causes the variable name to be included in the output, and x
passes its value (in this case, 5).
If you use a number as an argument, #x
will turn the number into a string and then treat it as a number:
main.c
12345678910#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); SQR (54); // number as argument return 0; }
Token Pasting operator ##
The ##
operation combines two tokens into one.
main.c
12345678#include <stdio.h> #define CONCAT(x, y) x##y int main() { int myVariable = 10; // variable named `myVariable` printf("%d\n", CONCAT(my, Variable)); // Result: 10 return 0; }
The CONCAT(x, y)
macro concatenates the tokens my
and Variable
, which results in the name myVariable
- just like a variable name.
When you call CONCAT(x, y)
, the preprocessor replaces it with myVariable
, and you can access the value of myVariable
.
Swipe to start coding
- Complete the
CREATE_VAR
macro, which will concatenate the tokenstoken1
andtoken2
; - Use the created macro to create the variable "myVariable";
- Specify the name of the variable whose contents you want to display on the screen.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Tiivistä tämä luku
Explain code
Explain why doesn't solve task
Awesome!
Completion rate improved to 5.56
Stringify Operators
Pyyhkäise näyttääksesi valikon
Stringify operator #
The # operator is used to convert a macro argument into a string literal. This means that if you pass any value to the macro, it will be converted to a string.
Here is an example of usage:
main.c
123456789#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); return 0; }
The #x
operator in the SQR macro is used to turn the x
argument into a string. When you pass the j
variable to the macro, #x
produces the string "j" (i.e. the variable name), not its value.
Thus, in the line
printf("Square " #x " = %d\n", )(x)*(x)));
#x
causes the variable name to be included in the output, and x
passes its value (in this case, 5).
If you use a number as an argument, #x
will turn the number into a string and then treat it as a number:
main.c
12345678910#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); SQR (54); // number as argument return 0; }
Token Pasting operator ##
The ##
operation combines two tokens into one.
main.c
12345678#include <stdio.h> #define CONCAT(x, y) x##y int main() { int myVariable = 10; // variable named `myVariable` printf("%d\n", CONCAT(my, Variable)); // Result: 10 return 0; }
The CONCAT(x, y)
macro concatenates the tokens my
and Variable
, which results in the name myVariable
- just like a variable name.
When you call CONCAT(x, y)
, the preprocessor replaces it with myVariable
, and you can access the value of myVariable
.
Swipe to start coding
- Complete the
CREATE_VAR
macro, which will concatenate the tokenstoken1
andtoken2
; - Use the created macro to create the variable "myVariable";
- Specify the name of the variable whose contents you want to display on the screen.
Ratkaisu
Kiitos palautteestasi!
Awesome!
Completion rate improved to 5.56single