es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Se esperaba una expresión primaria antes de } en C++.

¿Por qué no se puede colocar una etiqueta inmediatamente antes de }while(/*exp*/); en un bucle do-while, en lugar de esperar una expresión primaria?

int main()
{
    int x = 5;

    do{
        if(x==2) goto label;

        printf("%d", x);

    label:
        ; // si no hay error: expected primary-expression before ‘}' token
    }while(--x);

    return 0;
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    No se puede colocar una etiqueta inmediatamente antes de }while(/exp/); en un bucle do-while porque una etiqueta debe ir seguida por una instrucción, y }while(/exp/); no es una instrucción. }while(/exp/); es parte de la sintaxis del bucle do-while y no puede separarse de él. Una etiqueta solo puede preceder una instrucción o una declaración, pero no una sintaxis de bucle. Por lo tanto, el compilador espera una expresión primaria después de la palabra clave while, y colocar una etiqueta antes de ella resultaría en un error de sintaxis.

Comments are closed.