Bonsoir,

Quelqu'un pourrait-il m'expliquer pourquoi ces deux lignes ne sont pas équivalentes ?

Voici les deux exemples :

N.B : data est tableau de type char contenant 8 caractères, soit de taille 8+1.

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 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++] = '\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.

Je pensais que les deux expressions b++ et b+1 était équivalente, mais j'ai dû me tromper...

Merci de m'éclairer.