Bizarrement, c'est le r�sultat du code C qui me surprend le plus :
il signifie que la post-incr�mentation est effectu�e apr�s l'affectation, 
alors que j'aurais plut�t immagin� qu'elle serait r�alis�e avant.
Par contre, en java, le r�sultat de 0++ est bien 0, et il n'y a aucune 
garantie que suite � l'affectation, taille ait gard� la m�me allocation 
m�moire si je ne m'abuse. Mais il me para�t intuitif que tous les calculs de 
la partie droite de l'affectation soient r�alis�s avant celle-ci.

N�anmoins, il s'agit l� d'une �criture qui peut pr�ter � confusion (on ne 
peut pas � priori savoir quel doit en �tre le r�sultat), comme il en existe 
de nombreux exemples (je n'en ai pas sous la main malheureusement, demain si 
je pense � prendre le bouquin o� je suis s�r d'en trouver), donc d'un code 
mal �crit : il y a certainement un moyen de r��crire cette ligne pour faire 
en sorte d'en conna�tre le r�sultat � coup s�r :
taille++ en est un exemple, et /* taille++; */ en est un autre.

St�phan BERNARD

P.S : Un exemple de mauvais code qui me revient :
qqchose = f(++a) + f(a);
... renvoie quoi ? f(a+1) + f(a+1) ou f(a+1) + (a) ?

Le Mardi 26 F�vrier 2002 13:43, vous avez �crit :
> Bonjour, j'ai un comportement que je n'arrive pas � expliquer
> avec l'op�rateur de post-incr�mentation en Java :
>
> public class Test
> {
>    public static void main(String[] args){
>      int taille = 0;
>      taille = taille++;
>      System.out.println(taille);
>    }
> }
>
> Affiche 0 ! Ou est pass�e ma post-incr�mentation ?
> Le meme programme en C, donne lui le r�sultat attendu (1) :
>
> #include <stdio.h>
> void main() {
>    int taille = 0;
>    taille = taille++;
>    printf("%d\n",taille);
> }
>
> Quelqu'un pourrait-il m'expliquer pourquoi Java ne se comporte
> pas de la meme fa�on que le programme en C ?
>
> Merci, yann.

-- 
St�phan BERNARD (+33) 473 44 07 25      [EMAIL PROTECTED]
LISC/CEMAGREF - 24 av. des Landais, BP 50085 - 63172 Aubi�re Cedex

Répondre à