je vois cet avertissement Comment faire pour le réparer?avertissement: l'opérande gauche de l'expression virgule n'a aucun effet
Temp += (Table[i, temp3] - (MSB[i]^0x1));
avertissement: opØrande gauche de la virgule n'a pas d'effet
je vois cet avertissement Comment faire pour le réparer?avertissement: l'opérande gauche de l'expression virgule n'a aucun effet
Temp += (Table[i, temp3] - (MSB[i]^0x1));
avertissement: opØrande gauche de la virgule n'a pas d'effet
ce qui est l'objet de la table? Si elle est un tableau 2 dimensions, alors vous devriez écrire
Table[i][temp3]
Dans votre code
[i, temp3]
est un opérateur virgule - il évalue le 1er paramètre (i), ne tient pas compte et renvoie temp3, de sorte que vous peut simplement déposer i si Table est un type de conteneur acceptant un index unique pour accéder à ses objets
je vous remercie beaucoup quand je fais cela, il a résolu Tablo [i] [temp3] – user477085
@user: envisager d'accepter cette réponse, alors. (Cliquez sur la flèche verte à gauche de la réponse.) – Bill
L'opérateur de virgule évalue le nombre d'expressions de gauche à droite et donne la valeur du plus à droite. Vous avez une virgule dans Table[i, temp3]
, ce qui correspond exactement à Table[temp3]
. Étiez-vous en train d'essayer de faire Table[i][temp3]
pour accéder à une position dans un tableau bidimensionnel?
éditer: Je vais vous en expliquer un peu plus, cela peut vous être utile. Je ne vais pas être précis à 100%, c'est juste pour vous donner une idée de ce qui se passe. Pourquoi avez-vous besoin d'utiliser deux paires de parenthèses pour accéder à une «cellule» dans votre «table»? Avec des tableaux unidimensionnels, array[i]
vous atterrira sur le i-ième élément du tableau, non? Eh bien, avec un tableau à deux dimensions, appelons-le comme vous l'avez fait, table[i]
vous posera aussi sur le i-ème élément. Cette fois, cependant, cet élément est un autre tableau: la totalité de la i-ème rangée de la table.
Donc, si table[i]
est une ligne de la table, qui est juste un autre tableau, comment accéder à la colonne j? Eh bien, vous devez aller à row[j]
, qui est table[i][j]
.
Les tableaux multidimensionnels dans C sont des "tableaux de tableaux".
Mauvaise syntaxe - si Table
est un tableau bidimensionnel, utilisez Table[i][temp3]
.
Qu'entendez-vous par i, temp3
? Si Table
est un tableau 2D, accédez à l'élément (i, temp3) avec Table[i][temp3]
.
Edit: Depuis que je suis assez lent pour être battu par plusieurs réponses, je vais ajouter quelque chose pour que ma réponse est non seulement un double de ceux précédents: Qu'est-ce i, temp3
signifie vraiment? Eh bien, la norme C99 explique:
« L'opérande gauche d'un opérateur virgule est évaluée comme une expression vide, il y a un point de séquence après son évaluation alors l'opérande de droite est évaluée, le résultat a son type et. valeur.97) Si une tentative est faite pour modifier le résultat d'une virgule ou pour l'accéder à après le point de séquence suivant, le comportement est indéfini. "
Donc Table[i, temp3]
signifie «évaluer i, puis accéder au numéro d'élément temp3 dans Table
.Ainsi, le compilateur vous avertit que le i ne fait rien (puisque l'évaluation de i ne produit aucun effet secondaire).
Vous devez nous dire ce que vous voulez 'Table [i, temp3]' faire. – nos
L'avertissement vous indique que 'Table [i, temp3]' n'est probablement pas ce que vous voulez dire, car c'est équivalent à 'Table [temp3]'. Si 'Table' est un tableau multi-dimensionnel ou un tableau de pointeurs, cela devrait être' Table [i] [temp3] '? – aschepler
Pourriez-vous indiquer comment la table a été définie? –