C
— Licence 2 InformatiqueVoir le cours.
Voir le cours.
23
est une valeur droite.
num
est ici une valeur droite. Elle peut aussi être
une valeur gauche dans d’autres contextes (comme par exemple dans
num = 25
).
ptr
est ici une valeur droite. Même remarque que
pour la question précédente.
*ptr
est ici une valeur droite. Même remarque que
pour la question précédente.
La première occurrence de num
est une valeur gauche
: elle dénote le conteneur dont la valeur est mise à jour. La deuxième
occurrence de num
est une valeur droite : elle fait
référence à la valeur de num
. La sous-expression
num + 1
est une valeur droite. L’expression toute entière
num = num + 1
est une valeur droite. Elle porte pour valeur
la valeur affectée (c’est-à-dire l’ancienne valeur de num
plus 1
).
*ptr
est une valeur gauche : elle dénote le
conteneur situé en mémoire à l’adresse ptr
.
num
est une valeur droite. L’expression toute entière est
une valeur droite.
Même remarque que pour la question (e).
ptr
est une valeur droite (qui peut dans d’autres
contextes être une valeur gauche). ptr + 2
est toujours une
valeur droite. *(ptr + 2)
est ici une valeur droite mais
peut être une valeur gauche dans certains contextes.
ptr
est une valeur droite (qui peut dans d’autres
contextes être une valeur gauche). ptr + 2
est toujours une
valeur droite. À la différence de la question précédente,
*(ptr + 2)
est une valeur gauche puisqu’elle désigne le
conteneur à l’adresse spécifiée dont la valeur est mise à jour.
Noter ici la subtilité : si x
est un pointeur de type
T *
et v
est une valeur de type
T
, dans l’expression *x = v
, la
sous-expression x
est une valeur droite mais la
sous-expression *x
est une valeur gauche.
&num
est toujours une valeur gauche. Il est en
effet impossible de réaliser une affectation sur &num
.
Ceci reviendrait à tenter de modifier l’adresse d’une variable, ce qui
est impossible.
ptr
est une valeur gauche. &num
est
une valeur droite. ptr = &num
est une valeur
droite.
*&ptr
dénote l’entité à l’adresse de
ptr
, soit donc ptr
. Cette expression est donc
équivalente à ptr
. Cette dernière est une valeur droite ici
mais peut être une valeur gauche dans d’autres contextes.
num
est une valeur droite. fct_1(num)
est une valeur droite.
&num
est une valeur droite.
fct_2(&num)
est une valeur droite.
ptr
est une valeur droite. fct_2(ptr)
est une valeur droite.