8
votes

Syntaxe similaire mais on montre une erreur mais une autre ne fait pas

hiii tout

J'ai fait ce programme aujourd'hui xxx

pourquoi d'abord montre une erreur alors que la seconde ne le fait pas? Just () fait compiler un programme. Pourquoi?

- Shruti


0 commentaires

5 Réponses :


0
votes

(1,2) est évalué vers la dernière expression de la liste, i.e. 2 .

Un autre exemple: (a, b, c) évaluerait à C .

Si vous souhaitez utiliser un nombre de fractions, utilisez un type flotté / double et utilisez le point comme un symbole décimal: double d = 1.2;


0 commentaires

6
votes

À l'intérieur des parenthèses, la langue spécifie une expression se produira. Dans ce cas ( B ), la virgule représente l'opérateur de la virgule de c.

Sans parenthèses, la langue spécifie que les déclarations variables sont séparées par des virgules. Dans l'exemple de A , le compilateur (analyseur) s'attend à des déclarations variables supplémentaires.


0 commentaires

9
votes

int A = 1,2; 2 est traité comme un nom de variable qui ne peut pas démarrer avec un numéro, d'où l'erreur.

int b = (1,2); opérateur de la virgule Évalue les opérandes de gauche à droite et renvoie la dernière expression de la liste, c'est-à-dire 2


0 commentaires

3
votes

La raison est dans votre première déclaration int A = 1,2; la virgule n'est pas analysée pour être un opérateur de séquence. Il fait partie d'une liste de déclaration et tente d'instancier une variable entière nommée 2 qui n'est pas autorisé par la langue.

Les parenthèses de la deuxième déclaration int b = (1,2); force la virgule à analyser en tant qu'opérateur de séquence.


0 commentaires

0
votes

Aucun d'entre eux n'a de sens pour moi au poing.

Mais alors je me suis souvenu de plusieurs opérations pour boucles. Par exemple: xxx

sachant que 1 est une expression valide et que les expressions sont des éliminations de langue valide, ma conclusion est que (1, 2) évalue 1 (mais ne fait rien avec elle), puis évalue 2 et renvoie 2.

et enfin: xxx

Qu'est-ce que est évalué 1 et 2 comme avant, renvoyez 2 et assignez-le à b.


0 commentaires