OVH Cloud OVH Cloud

Taille d'un char en C

33 réponses
Avatar
Jean
Bonjour,

Il me semblait avoir lu sur ce NG que la taille
d'un char en C valait 1 (sans autre précision sur l'unité) et
que cette taille pouvait être 7, 8 ou plus bits.
J'ai téléchargé la norme ISO/IEC 9899:1999 du langage C
mais je n'ai rien trouvé sur cela.
Pour ceux qui auraient également la norme, pouvez-vous
me dire à quel paragraphe je peux trouver cette info ?
Merci d'avance.
Jean

3 réponses

1 2 3 4
Avatar
Antoine Leca
Couic écrivit:
Il faut recompiler sur la machine Y, ce qui est portable en C,
c'est le source.


Mais tous les codes sources de tous les
langages ne sont donc pas portable ??


Non. L'exemple caricatural, c'est le langage d'assemblage.
À l'inverse, les programmes pour la machine de Turing, ou plus
simplement Java, où la cible est unique. Donc forcément et
automatiquement portable.


Ca veut donc dire que, sur une machine donnée,
c'est le compilateur qui, au moment de faire son travail,
va "voir" dans le processeur (ou ailleurs ??) combien de bits
celui-ci utilise pour traiter 1 caractère??


Oui.
Mais en fait, ce sens de la vision est instrumentalisé !

On parle généralement de configuration ou de cible du compilateur.
Certains compilateurs ont plusieurs configurations actives
simultanément (on choisit au moment de chaque compilation
laquelle utiliser), c'est ainsi que fonctionne lcc ou gcc
(le programme pilote, qui en fait se déroute sur le "vrai"
compilateur, cc1, qui lui dépend de la cible; et il est
parfaitement possible d'avoir plusieurs cc1 disponible au même
moment).


Antoine


Avatar
Bertrand Mollinier Toublet
Horst Kraemer wrote:
On Wed, 16 Jul 2003 09:06:45 -0700, Bertrand Mollinier Toublet
wrote:


Sur mon PC, les int font 32 bits (31 de valeur, 1 de signe).



Donc 10000000 00000000 00000000 00000001 vaut -1 ?

Quel PC ?

Fabrication maison ;-)


CPU DS-9000 piquee au NOSE de Moffet Field, du matos a droite a gauche
et quelques soudures. Pourquoi ?

--
Bertrand Mollinier Toublet
"Reality exists" - Richard Heathfield, 1 July 2003


Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "Couic" <@> wrote:

Mais tous les codes sources de tous les
langages ne sont donc pas portable ??


Euh, non! En général, les langages ont un ensemble commun qui a des chances
d'être portable, et des extensions qui sont spécifiques à telle ou telle
plateforme.

Ca veut donc dire que, sur une machine donnée,
c'est le compilateur qui, au moment de faire son travail,
va "voir" dans le processeur (ou ailleurs ??) combien de bits
celui-ci utilise pour traiter 1 caractère??


Non. En C, cette information fait partie de l'implémentation. Elle est
d'ailleurs à la disposition du programmeur (CHAR_BIT in <limits.h>)

Une implémentation (compilateur + fichiers d'entete + bibliothèques)
appartient à une architecture donnée.

Et pour répondre à ta future question, non cette valeur (CHAR_BIT) n'est pas
modifiable par l'utilisateur. (Bien que techniquement il puisse le faire si
le fichier <limits.h> est un fichier texte modifiable.)

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

1 2 3 4