Si on considère l'affectation:
x = x + 1
le x
à gauche de l'affectation n'a pas tout à fait le même sens que le
x
à droite de l'affectation ; en effet, le x
de gauche représente
un emplacement mémoire alors que le x
de droite est une
valeur. x est un nom qui représente une variable
associée à un emplacement mémoire.
Pour bien comprendre ce qui suit, il faut avoir à l'esprit la distinction entre statique et dynamique. Essentiellement, tout ce que peut réaliser le compilateur à la compilation est statique, alors que ce qui ne peut se faire qu'à l'exécution est dynamique. Par exemple, la zone de données statiques est la zone de la mémoire où le compilateur alloue les variables globales. Du point de vue de l'efficacité, la compilation n'ayant lieu qu'une seule fois, le temps de compilation peut être négligé et le compilateur doit faire le plus possible pour simplifier l'exécution; en d'autres termes, ce qui est statique ne coûte ``rien'' à l'exécution.