Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « : » » ?

Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « : » » ?

PHPz
PHPzoriginal
2023-08-26 16:06:226867parcourir

如何解决C++语法错误:'expected primary-expression before ':' token'?

Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton : » ?

En programmation C++, les erreurs de syntaxe sont un problème courant. L'une des erreurs courantes est le message d'erreur « expression primaire attendue avant le jeton ':' ». Cette erreur se produit généralement lors de l'utilisation d'expressions conditionnelles et de l'opérateur ternaire. Cet article présentera la cause de cette erreur et donnera la solution correspondante.

Tout d'abord, regardons un exemple de code simple :

int main() {
    int x = 5;
    int y = 10;
    int max = (x > y) ? x : y;
    return 0;
}

Dans le code ci-dessus, nous essayons d'utiliser des expressions conditionnelles et l'opérateur ternaire pour comparer les tailles de x et y, et attribuons la plus grande valeur à la variable max. Cependant, le compilateur a signalé une erreur « expression primaire attendue avant le jeton ':' ». En effet, dans la syntaxe C++, les « ? » et « : » dans l'opérateur ternaire doivent être remplacés par des expressions. Lorsque l'expression après le point d'interrogation est vraie, l'expression après les deux points sera exécutée ; sinon, l'expression avant les deux points sera exécutée ;

Pour résoudre cette erreur, nous devons nous assurer que l'expression conditionnelle utilisée dans l'opérateur ternaire est une expression légale. Les raisons courantes de cette erreur sont les suivantes :

  1. Expression manquante ou incorrecte : lorsque vous utilisez l'opérateur ternaire, vous devez vous assurer que l'expression dans la partie conditionnelle est une expression correcte. Si l'expression conditionnelle est manquante ou erronée, le compilateur ne la reconnaîtra pas, ce qui entraînera l'erreur « expression primaire attendue avant le jeton ':' ». Par exemple, l'expression conditionnelle est manquante dans le code suivant, ce qui conduit à cette erreur :
int main() {
    int x = 5;
    int y = 10;
    int max = (x >) ? x : y; // 错误:条件表达式缺失
    return 0;
}
  1. Parenthèses manquantes : Parfois, on peut ignorer les parenthèses de l'expression conditionnelle dans l'opérateur ternaire, ce qui conduit également à la même erreur . Lorsque vous utilisez l'opérateur ternaire, veillez à utiliser des parenthèses dans l'expression conditionnelle pour éviter les erreurs de syntaxe. Voici un exemple de parenthèses manquantes :
int main() {
    int x = 5;
    int y = 10;
    int max = x > y ? x : y; // 错误:缺少条件表达式的括号
    return 0;
}

Pour corriger l'erreur dans les deux cas ci-dessus, il suffit d'utiliser une expression légale à la place de l'expression conditionnelle et de s'assurer d'utiliser la bonne syntaxe.

De plus, lorsque nous utilisons l'opérateur ternaire, nous devons également nous assurer que nous utilisons la syntaxe correcte dans son contexte syntaxique. Par exemple, dans le code suivant, nous essayons d'attribuer le résultat d'un opérateur ternaire à une expression illégale, ce qui entraîne une erreur :

int main() {
    int x = 5;
    int y = 10;
    (x > y) ? x : y = max; // 错误:赋值给非法的表达式
    return 0;
}

Pour résoudre cette erreur, nous devons nous assurer que lors de l'utilisation de l'opérateur ternaire, le résultat Assign à une expression juridique, telle qu'une variable.

Pour résumer, lorsque l'erreur de syntaxe C++ "expression primaire attendue avant le jeton ':'" se produit, nous devons vérifier les aspects suivants :

  1. Assurez-vous que l'expression conditionnelle dans l'opérateur ternaire est une formule d'expression légale et utiliser une syntaxe correcte dans son contexte grammatical.
  2. Assurez-vous d'utiliser les bonnes parenthèses pour délimiter les expressions conditionnelles.
  3. Assurez-vous que le résultat dans l'opérateur ternaire est affecté à une expression légale.

En prêtant attention à ces détails, nous pouvons éviter cette erreur de syntaxe C++ courante et rendre notre code plus stable et fiable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn