IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Concepts en C

Cohérence, logique et fonctionnement du C


précédentsommairesuivant

I. Valeurs

Une valeur est une grandeur intrinsèquement constante . Elle a un caractère abstrait en ce sens qu'elle n'a pas besoin d'un support matériel pour exister.

Exemples :
2 , 3.1416 , Vrai, Rouge…

Ces grandeurs sont de nature différente : on a ici des valeurs du genre entier, réel, booléen, couleur. Selon leur nature, certaines opérations seront possibles et d'autres seront interdites ou non définies. Ainsi, il semble naturel de donner un sens à 2+3 mais que dire de 2+Rouge ? Même si les valeurs doivent être représentées en machine par un code, ceci ne doit pas faire oublier leur caractère abstrait ni leur signification.

Note : Le terme de valeur est utilisé ici dans un sens usuel.
Le résultat de l'évaluation d'une expression est souvent qualifié de « valeur de l'expression ». En C, le résultat de l'évaluation d'une expression est une grandeur, valeur ou objet. Le terme « value » utilisé par la norme ne correspond pas à la définition du terme valeur de ce texte, mais plutôt à celle du terme « grandeur ».

I-A. Type

En C, une valeur possède un type qui précise à quel ensemble appartient la valeur.

Le type caractérise les propriétés de cet ensemble, c'est-à-dire :

  1. Les valeurs que peuvent prendre les éléments de cet ensemble ;

  2. Les opérations qui peuvent être effectuées avec les valeurs de cet ensemble ;

  3. Le codage binaire permettant la représentation des valeurs de cet ensemble en machine. L'opérateur sizeof nous donne le nombre de bytes utilisés pour la représentation de ces valeurs.

On peut donc considérer une valeur comme une constante d'un type donné (à différentier d'un objet constant).

I-B. Conversions, Cast

Il est parfois nécessaire de transformer une valeur V1 d'un type donné T1 en une valeur V2 d'un autre type T2. Cette opération est appelée transtypage ou cast. Elle impose que soit définie une règle de transformation des valeurs de type T1 en des valeurs de type T2. Si une telle règle n'existe pas, le transtypage est impossible.

Cette opération de transtypage est parfois effectuée automatiquement, et plus ou moins discrètement selon le cas, par le compilateur ou peut être demandée par le programmeur, lorsqu'elle est possible, en utilisant l'opérateur de cast ().

(T2 ) V1

- Cette transformation peut conduire à une différence radicale entre la représentation binaire de V1 et de V2 et n'est donc pas une simple interprétation du codage binaire de V1 selon la représentation binaire utilisée par les valeurs de type T2.

- La transformation ne conserve pas nécessairement la « valeur » de la grandeur : par exemple, la transformation de la valeur 258 de type int en une valeur de type unsigned char (sur 8 bits) donnera pour cette dernière la valeur 2.


précédentsommairesuivant

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.