Poiteur en gcc

Top Page

Reply to this message
Author: Patrick Dupre
Date:  
To: guilde
Subject: Poiteur en gcc
Bonsoir,

J'en perds mon latin.
Il y a sens doute une explication, mais je ne trouve pas.

En ayant
current_cross = (set -> cross_set) + i_cros ;
et
cur_line = (current_cross -> lines) + i_line ;
cur_cross et cur_line sont bien declares comme pointeurs (differents) sur les bonnes structures


la valeur de cur_line devient fausse ou moins pour i_line = 1

J'ai fait le test avec ces 3 lignes de code successive
dans la boucle qui incremente i_line

if ((((set -> cross_set) + i_cros) -> lines + i_line) != ((current_cross -> lines) + i_line)) printf ("Issue 1 %d\n", i_line) ;
if (((set -> cross_set) + i_cros) -> lines != current_cross -> lines) printf ("Issue 2 %d\n", i_line) ;
if (((set -> cross_set) + i_cros) -> lines + i_line != current_cross -> lines + i_line) printf ("Issue 3 %d\n", i_line) ;


Le test 2 est toujours correct
Mais les tests 1 et 3 sont systematiquement en erreur pour i_line = 1 (en fait ceux sont les meme tests).

Pourquoi le sommation avec i_line est-elle fausse ?
En fait
(set -> cross_set) + i_cros) -> lines + i_line

semble bien correct, mais pas
current_cross -> lines + i_line

Est-ce que je dois caster ?


===========================================================================
 Patrick DUPRÉ                                 | | email: pdupre@???
 Laboratoire interdisciplinaire Carnot de Bourgogne
 9 Avenue Alain Savary, BP 47870, 21078 DIJON Cedex FRANCE
 Tel: +33 (0)380395988
===========================================================================