Una pregunta del operador de coma

Considere los siguientes programas en C.

// PROGRAM 1
#include<stdio.h>
  
int main(void)
{
    int a = 1, 2, 3;
    printf("%d", a);
    return 0;
}

El programa anterior falla en la compilación, pero el siguiente programa compila bien e imprime 1.

// PROGRAM 2
#include<stdio.h>
  
int main(void)
{
    int a;
    a = 1, 2, 3;
    printf("%d", a);
    return 0;
}

Y el siguiente programa imprime 3, ¿por qué?

// PROGRAM 3
#include<stdio.h>
  
int main(void)
{
    int a;
    a = (1, 2, 3);
    printf("%d", a);
    return 0;
}

En un programa C/C++, la coma se usa en dos contextos: (1) Un separador (2) Un operador. (Ver esto para más detalles).

La coma funciona como un separador en el PROGRAMA 1 y obtenemos un error de compilación en este programa.

La coma funciona como un operador en el PROGRAMA 2. La precedencia del operador coma es la mínima en la tabla de precedencia de operadores . Entonces, el operador de asignación tiene prioridad sobre la coma y la expresión «a = 1, 2, 3» se vuelve equivalente a «(a = 1), 2, 3». Es por eso que obtenemos la salida como 1 en el segundo programa.

En el PROGRAMA 3, se utilizan corchetes, por lo que primero se ejecuta el operador de coma y obtenemos el resultado 3 (consulte la página Wiki para obtener más detalles).

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 *