Bonsoir,
Quelqu'un pourrait-il m'expliquer pourquoi ces deux lignes ne sont pas équivalentes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part tableau[b+1] = '\0';Voici les deux exemples :
Code : Sélectionner tout - Visualiser dans une fenêtre à part tableau[b++] = '\0';
N.B : data est tableau de type char contenant 8 caractères, soit de taille 8+1.
Avec ce code, j'obtiens bien tableau[9] == '\0'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 for (b = 0; b < COMPTER_CH(data); b++) { printf("B = %d\n", b); tableau[b] = data[b]; printf("tableau[%d] = %c\n", b, tableau[b]); } tableau[b] = '\0'; printf("tableau[%d] = %c\n", b, tableau[b]); tableau[b+1] = '\0'; printf("tableau[%d] = %c\n", b, tableau[b]);
Avec celui-là, j'obtiens n'importe quoi : tableau[9] est égal à tout sauf la valeur que je souhaite lui donner, ici la valeur nulle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 for (b = 0; b < COMPTER_CH(data); b++) { printf("B = %d\n", b); tableau[b] = data[b]; printf("tableau[%d] = %c\n", b, tableau[b]); } tableau[b] = '\0'; printf("tableau[%d] = %c\n", b, tableau[b]); tableau[b++] = '\0'; printf("tableau[%d] = %c\n", b, tableau[b]);
Je pensais que les deux expressions b++ et b+1 était équivalente, mais j'ai dû me tromper...
Merci de m'éclairer.
![]()
Partager