Operadores # y ## en C

Operador de string (#)

Este operador hace que el argumento real correspondiente se incluya entre comillas dobles. El operador #, que generalmente se denomina operador de string , convierte el argumento al que precede en una string entrecomillada. Para obtener más información sobre las directivas de preprocesador, consulte estos
ejemplos:

  1. El siguiente preprocesador convierte la línea printf(mkstr(geeksforgeeks)); en printf(“geeksforgeeks”);

    // CPP program to illustrate (#) operator
    #include <stdio.h>
    #define mkstr(s) #s
    int main(void)
    {
        printf(mkstr(geeksforgeeks));
        return 0;
    }

    Producción:

    geeksforgeeks
    
  2. En este programa, el valor de a se reemplaza por macro.

    // CPP program to illustrate (#) operator
    #include <iostream>
    using namespace std;
      
    #define a 8.3297
      
    int main()
    {
        cout << "Value of a is " << a << endl;
      
        return 0;
    }

    Producción:

    Value of a is 8.3297
    
  3. Este programa averigua el máximo de dos números usando macro

    // CPP program to illustrate (#) operator
    #include <iostream>
    using namespace std;
      
    #define MAX(i, j) (((i) > (j)) ? i : j)
      
    int main()
    {
        int a, b;
      
        a = 250;
        b = 25;
      
        cout << "The maximum is " << MAX(a, b) << endl;
      
        return 0;
    }

    Producción:

    The maximum is 250
    

Operador de pegado de tokens (##)

Permite que los tokens utilizados como argumentos reales se concatenen para formar otros tokens. A menudo es útil fusionar dos tokens en uno mientras se expanden las macros. Esto se denomina pegado de tokens o concatenación de tokens. El operador de preprocesamiento ‘##’ realiza el pegado de tokens. Cuando se expande una macro, los dos tokens a cada lado de cada operador ‘##’ se combinan en un solo token, que luego reemplaza el ‘##’ y los dos tokens originales en la expansión de la macro.
Ejemplos:

  1. El preprocesador transforma printf(“%d”, concat(x, y)); en printf(“%d”, xy);

    // CPP program to illustrate (##) operator
    #include <stdio.h>
    #define concat(a, b) a##b
    int main(void)
    {
        int xy = 30;
        printf("%d", concat(x, y));
        return 0;
    }

    Producción:

    30
    

Aplicación: ## proporciona una forma de concatenar argumentos reales durante la expansión de macros. Si un parámetro en el texto de reemplazo está junto a un ##, el parámetro se reemplaza por el argumento real, el ## y el espacio en blanco que lo rodea se eliminan y el resultado se vuelve a escanear.

Este artículo es una contribución de Shivani Ghughtyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *