Yann Secq:
> 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 ?
Elle a ete effectuee ;-)
Justement, il s'agit d'une post-incrementation donc effectuee apres le
calcul de l'expression. Ton code est equivalent a:
int taille=0;
int expression = taille;
taille++;
taille=expression;
C'est effectivement tres trompeur. Pour ma part, je n'utilise cet
operateur que seul (typiquement: i++; )
Compiled from Incrementation.java
public class Incrementation extends java.lang.Object {
public static void main(java.lang.String[]);
public Incrementation();
}
Method void main(java.lang.String[])
0 iconst_0
1 istore_1
2 iload_1
3 iinc 1 1 <<--- ICI
6 istore_1
7 getstatic #12 <Field java.io.PrintStream out>
10 iload_1
11 invokevirtual #18 <Method void println(int)>
14 return
Method Incrementation()
0 aload_0
1 invokespecial #24 <Method java.lang.Object()>
4 return
> 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 ?
La, ca devient carrement genant, mais je suppose que ca doit etre dans
la JLS. Java n'a que la syntaxe du C, pas sa semantique ;-)
Guillaume