J'ai deux tableaux dans mon code, chacun d'entre eux dispose de 7 éléments, j'ai utilisé une boucle:
for (int i = 0; i < 7; i++) { distance = x[++i] - x[i]; area = trapezoidArea(distance, y[++i],y[i]); sum += area; }
3 Réponses :
Si vous voulez un de plus que ++ i code> augmente
i code>. Donc, vous augmentez
i code>
i code> dans
x [i] code> supposé être? Le
i code> avant le
++ i code> dans
x [++ i] code> augmentait, ou après avoir été augmenté? P>
i code> sans augmenter, do
i + 1 code> à la place. Remplacement de
x [++ i] code> avec
x [i + 1] code> et de même avec
y [++ i] code> devrait corriger ce problème. Mais sans voir tout votre code, il est impossible de dire si c'est le seul problème. P>
Vous ne pouvez pas utiliser Soyez prudent que vous devez faire boucle jusqu'à ce que ++ code> comme opérateur de poste ou de pré-augmentation dans ce cas. de
Cela modifiera la valeur de votre variable i code>, et donc votre
pour code> boucle n'a pas le comportement souhaité. de
La manière appropriée serait:
i <6 code> parce que si vous laissez 7, vous allez essayer d'accéder à x [7 + 1] Â = x [8], et vous aurez
comportement non défini code> ou
défaut de segmentation code>. P> p>
Lorsque vous faites ++ i code> sur les crochets, vous incrémentez réellement la valeur de
i code> par un. Ce que vous devriez faire, c'est
i + 1 code> et laisser
++ i code> uniquement dans la déclaration de boucle. P>
Indice:
++ code> n'est pas le même que
+ 1 code>.
Trouvez la ligne de votre programme par ligne (mentalement ou avec un débogueur) et considérez les valeurs de vos variables (en particulier
i code>) à chaque fois.
Vous augmentez
i code> trois fois dans la boucle. Êtes-vous sûr de vouloir faire ça?