web-dev-qa-db-fra.com

Comment "()" convertit-il des instructions en expressions en C ++?

J'ai le code suivant:

int main() {
    int i=0;
    int j=({int k=3;++i;})+1; // this line
    return 0;
}

Il compile et s'exécute. Si je supprime le () de "cette ligne", alors il ne compile pas.

Je suis simplement curieux de savoir quelle règle de syntaxe est appliquée ici.

Le {} contient 2 instructions, et la dernière instruction indique la valeur "retour" de ce bloc de code. Alors pourquoi at-il besoin d'un supplément () paire pour rendre cette valeur de retour utilisable?

21
Hind Forsum

C'est une expression d'instruction , et c'est une extension spécifique à GCC.


De la référence liée:

Une instruction composée entre parenthèses peut apparaître comme une expression dans GNU C. Cela vous permet d'utiliser des boucles, des commutateurs et des variables locales dans une expression.

Une instruction composée est un bloc d'instructions entre accolades.

36