Après avoir lu les deux suivantes ...Quelle est l'expression compliquée utilisant l'opérateur de virgule analysé dans C?
What does the comma operator , do?
How does the Comma Operator work
Je ne suis toujours pas sûr que je ne peux pas analyser la déclaration suivante que j'ai trouvé dans quelqu'un le code source d'un autre:
int i, n, val, locala = a, bestval = -INFINITY;
L'opérateur de virgule est évalué dans l'ordre de gauche à droite, oui? Si nous utilisons entre parenthèses pour montrer l'ordre de préséance, je pense que nous avons quelque chose comme ceci: Alors
(int i, (n, (val, (locala = a, (bestval = -INFINITY)))));
, le est d'origine peut-être équivalent à ce qui suit?
int bestval = -INFINITY;
int locala = a;
int val;
int n;
int i;
Si oui, pourquoi le mot-clé int
appliqué à toutes les variables au lieu de seulement la plus à gauche variables i
?
De même, les expressions les plus à droite retournent leur valeur, oui? Par conséquent, locala = a
peut renvoyer la valeur locala
après l'affectation. Cela signifie-t-il que les variables i
, n
et val
sont toutes initialisées? Si oui, à quoi sont-ils initialisés? -INFINITY
? la valeur de a
?
Ce n'est pas l'opérateur de virgule. La plupart des utilisations de virgules dans C ne sont pas l'opérateur de virgule. – user2357112
Règle empirique: si la chose à gauche n'est pas défaussée, ce n'est pas l'opérateur virgule. – user2357112
@Toothpick Anemone Il n'y a pas d'opérateur virgule. Il y a une liste de déclaration. –