Operadores # y ## en C

Operador de cadena (#)

Este operador prueba que el argumento real correspondiente está entre comillas dobles. El operador #, generalmente conocido como el una cuerda operador, convierte el argumento anterior en una cadena entre comillas. Para obtener más información sobre las directivas de preprocesador, consulte este
Ejemplos:

  1. El siguiente preprocesador convierte la línea printf(mkstr(geeksforgeeks)); int 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 una 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 encuentra el máximo de dos números usando una 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 adición de signos (##)

Permite aproximar tokens utilizados como argumentos reales para formar otros tokens. A menudo es útil fusionar dos señales en una al expandir macros. Esto se llama pegado de vales o parcheado conjunto de tokens. El operador de preprocesamiento ‘##’ realiza la adición de tokens. Cuando se expande una macro, los dos caracteres a cada lado de cada operador ‘##’ se combinan en un solo carácter, que reemplaza el ‘##’ y los dos caracteres originales en la expansión de la macro.
Ejemplos:

  1. El preprocesador cambia printf(«%d», concat(x, y)); int 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
    

Solicitud: El ## proporciona una forma de combinar argumentos reales durante la expansión de macros. Si el texto de reemplazo contiene un parámetro junto a ##, el parámetro se reemplaza con el argumento real, el ## y los espacios en blanco circundantes se eliminan y el resultado se vuelve a analizar.

Este artículo ha sido agregado Shivani Ghughtyal. Si te gusta GeeksforGeeks y quieres contribuir, también puedes escribir un artículo usando contribuya.geeksforgeeks.org o publique su artículo en contribuya@geeksforgeeks.org. Vea su artículo destacado en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba un comentario si encuentra algún problema o si desea compartir más información sobre el tema tratado anteriormente.

Mis notas personales
flecha_caer_arriba

Deja un comentario

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