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
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
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).
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).
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
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/
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- emdelYOURBRA@noos.fr [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/
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/