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.