Bonjour,
mon enseignant m'a donné le corrigé de l'exercice ci-dessous, mon problème est que je ne comprends pas
dans la question 1) pourquoi cette ligne *p = *p + 4 donne a=14 ? De plus, pourquoi cette ligne calcule a et non b?
Dans la 2), quelqu'un pourrait t-il m'expliquer l'utilisation de ++? Est ce que ça signifie +1 ?
Dans la 3) Pourquoi obtient-on x au final 2 et y=6?
Merci d'avance
Exercice:
Pour chacune des 3 séries d'instructions suivantes, donner chronologiquement les valeurs des variables
présentes sur papier en faisant des schémas.
1)
int a, b, * p;
a = 10;
p = &a;
b = *p + 2;
*p = *p + 4;
*p + = 11;
*p = 0;
2)
int x, y, * p;
x = 2;
p = &x;
++*p;
(*p)++;
y = ++*p;
y = (*p) ++;
y = *p;
3)
int x, y;
int a [10];
int * pa;
int * pb;
a[0] = 4;
a[3] = 2;
a[7] = 11;
pa = &a[0];
x = *pa;
pb = pa + 3;
x = *pb;
y = *(pa + 3);
x = *(pb + 4);
x = *pb + 4;
Réponses
1) chronologiquement:
a vaut 10, 14, 25 puis 0.
b vaut 12.
2) chronologiquement:
x vaut 2, 3, 4, 5 puis 6.
y vaut 6.
3) chronologiquement:
x vaut 4 puis 2.
y vaut 2, 11 puis 6
Partager