unsigned int c; c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.
unsigned int c = 'é';
Marche pas: il veut un résultat entre 0 et UCHAR_MAX. Avec ta méthode (et en supposant que 'é' se représente avec un seul byte), il risque d'obtenir quelque chose dans l'intervalle [UINT_MAX+SCHAR_MIN, UINT_MAX]!
Ok.
unsigned int c = (unsigned char) 'é';
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', "Antoine Leca" <root@localhost.gov> wrote:
En Xns951E5C4CEF83Chsnoservernet@212.27.42.68, Emmanuel Delahaye va
escriure:
unsigned int c;
c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned
char.
unsigned int c = 'é';
Marche pas: il veut un résultat entre 0 et UCHAR_MAX. Avec ta méthode
(et en supposant que 'é' se représente avec un seul byte), il risque
d'obtenir quelque chose dans l'intervalle [UINT_MAX+SCHAR_MIN,
UINT_MAX]!
Ok.
unsigned int c = (unsigned char) 'é';
--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
unsigned int c; c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.
unsigned int c = 'é';
Marche pas: il veut un résultat entre 0 et UCHAR_MAX. Avec ta méthode (et en supposant que 'é' se représente avec un seul byte), il risque d'obtenir quelque chose dans l'intervalle [UINT_MAX+SCHAR_MIN, UINT_MAX]!
Ok.
unsigned int c = (unsigned char) 'é';
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Antoine Leca
En cce74t$6cp$, Vincent Guichard va escriure:
'é' est TOUJOURS un int. Simplement, dans un cas comme cela, 'é' est défini par l'implémentation, et sera probablement en dehors de l'intervalle -128 .. 127 (et il y a pas mal de chances pour que ce ^^^
-128 .. *255*, bien sûr.
soit 50089, 43459 ou 3282632704.)
A mon avis, les chances pour qu'un int vaille 3282632704 sont faibles. norme ISO §5.2.4.2.2: maximum value for an object of type int INT_MAX +32767 // 215 - 1
Remonte une vingtaine de lignes:
Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
Ouf! les compilos 32 bits sont possibles.
Antoine
En cce74t$6cp$2@news-reader2.wanadoo.fr, Vincent Guichard va escriure:
'é' est TOUJOURS un int. Simplement, dans un cas comme cela, 'é' est
défini par l'implémentation, et sera probablement en dehors de
l'intervalle -128 .. 127 (et il y a pas mal de chances pour que ce
^^^
-128 .. *255*, bien sûr.
soit 50089, 43459 ou 3282632704.)
A mon avis, les chances pour qu'un int vaille 3282632704 sont faibles.
norme ISO §5.2.4.2.2:
maximum value for an object of type int
INT_MAX +32767 // 215 - 1
Remonte une vingtaine de lignes:
Their implementation-defined values shall be equal or greater in
magnitude (absolute value) to those shown, with the same sign.
'é' est TOUJOURS un int. Simplement, dans un cas comme cela, 'é' est défini par l'implémentation, et sera probablement en dehors de l'intervalle -128 .. 127 (et il y a pas mal de chances pour que ce ^^^
-128 .. *255*, bien sûr.
soit 50089, 43459 ou 3282632704.)
A mon avis, les chances pour qu'un int vaille 3282632704 sont faibles. norme ISO §5.2.4.2.2: maximum value for an object of type int INT_MAX +32767 // 215 - 1
Remonte une vingtaine de lignes:
Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
Ouf! les compilos 32 bits sont possibles.
Antoine
Alexandre BACQUART
Vincent Guichard wrote:
A mon avis, les chances pour qu'un int vaille 3282632704 sont faibles. norme ISO §5.2.4.2.2: maximum value for an object of type int INT_MAX +32767 // 215 - 1
Nop. En C, 32767 est la valeur max "minimum" puisqu'elle dit que sizeof(int) >= 2.
INT_MAX dépend de la machine.
-- Tek
Vincent Guichard wrote:
A mon avis, les chances pour qu'un int vaille 3282632704 sont faibles.
norme ISO §5.2.4.2.2:
maximum value for an object of type int
INT_MAX +32767 // 215 - 1
Nop. En C, 32767 est la valeur max "minimum" puisqu'elle dit que
sizeof(int) >= 2.
A mon avis, les chances pour qu'un int vaille 3282632704 sont faibles. norme ISO §5.2.4.2.2: maximum value for an object of type int INT_MAX +32767 // 215 - 1
Nop. En C, 32767 est la valeur max "minimum" puisqu'elle dit que sizeof(int) >= 2.
INT_MAX dépend de la machine.
-- Tek
Antoine Leca
En 40eab037$0$18104$, Alexandre BACQUART va escriure:
Nop. En C, 32767 est la valeur max "minimum"
Oui.
puisqu'elle dit que sizeof(int) >= 2.
Euh ? Quel est le rapport ? Et pourquoi ?
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec sizeof(long) = sizeof(int) == 1.
Antoine
En 40eab037$0$18104$626a14ce@news.free.fr, Alexandre BACQUART va escriure:
Nop. En C, 32767 est la valeur max "minimum"
Oui.
puisqu'elle dit que sizeof(int) >= 2.
Euh ?
Quel est le rapport ? Et pourquoi ?
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec sizeof(long) = sizeof(int) == 1.
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en bytes non ?
Rappel: sizeof char vaut 1
Alexandre BACQUART
Antoine Leca wrote:
En 40eab037$0$18104$, Alexandre BACQUART va escriure:
Nop. En C, 32767 est la valeur max "minimum"
Oui.
puisqu'elle dit que sizeof(int) >= 2.
Euh ? Quel est le rapport ? Et pourquoi ?
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec sizeof(long) = > sizeof(int) == 1.
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en bytes non ?
<dinkumware> You use the sizeof operator, as in the expression sizeof X to determine the size in bytes of an object whose type is the type of X. </dinkumware>
Ou est-ce la taille en nombre de "plus petit élément" d'une architecture donnée ?
-- Tek
Antoine Leca wrote:
En 40eab037$0$18104$626a14ce@news.free.fr, Alexandre BACQUART va escriure:
Nop. En C, 32767 est la valeur max "minimum"
Oui.
puisqu'elle dit que sizeof(int) >= 2.
Euh ?
Quel est le rapport ? Et pourquoi ?
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec sizeof(long) = > sizeof(int) == 1.
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en
bytes non ?
<dinkumware>
You use the sizeof operator, as in the expression sizeof X to determine
the size in bytes of an object whose type is the type of X.
</dinkumware>
Ou est-ce la taille en nombre de "plus petit élément" d'une architecture
donnée ?
En 40eab037$0$18104$, Alexandre BACQUART va escriure:
Nop. En C, 32767 est la valeur max "minimum"
Oui.
puisqu'elle dit que sizeof(int) >= 2.
Euh ? Quel est le rapport ? Et pourquoi ?
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec sizeof(long) = > sizeof(int) == 1.
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en bytes non ?
<dinkumware> You use the sizeof operator, as in the expression sizeof X to determine the size in bytes of an object whose type is the type of X. </dinkumware>
Ou est-ce la taille en nombre de "plus petit élément" d'une architecture donnée ?
-- Tek
Alexandre BACQUART
cedric wrote:
Alexandre BACQUART wrote:
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en bytes non ?
Rappel: sizeof char vaut 1
C'est bien ce qui me chiffone. C'est quoi un "byte" d'après la norme ?
-- Tek
cedric wrote:
Alexandre BACQUART wrote:
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en
bytes non ?
Rappel: sizeof char vaut 1
C'est bien ce qui me chiffone. C'est quoi un "byte" d'après la norme ?
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en bytes non ?
Rappel: sizeof char vaut 1
C'est bien ce qui me chiffone. C'est quoi un "byte" d'après la norme ?
-- Tek
Antoine Leca
En 40ead4dc$0$18118$, Alexandre BACQUART va escriure:
Antoine Leca wrote:
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec sizeof(long) == sizeof(int) == 1.
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en bytes non ?
Oui. Mais rien ne dit qu'un multiplet (byte, selon la commission de terminologie) doive avoir 8 bits, il peut aussi en avoir 32 (et sur un DSP, cela devient plausible, ce n'est pas le cas sur Unix ou Windows).
Antoine
En 40ead4dc$0$18118$626a14ce@news.free.fr, Alexandre BACQUART va escriure:
Antoine Leca wrote:
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec
sizeof(long) == sizeof(int) == 1.
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en
bytes non ?
Oui. Mais rien ne dit qu'un multiplet (byte, selon la commission de
terminologie) doive avoir 8 bits, il peut aussi en avoir 32 (et sur un DSP,
cela devient plausible, ce n'est pas le cas sur Unix ou Windows).
En 40ead4dc$0$18118$, Alexandre BACQUART va escriure:
Antoine Leca wrote:
Je pense que l'on peut même avoir un DSP (>= 32 bits) avec sizeof(long) == sizeof(int) == 1.
Là, je ne te suis pas. L'opérateur sizeof retourne bien la taille en bytes non ?
Oui. Mais rien ne dit qu'un multiplet (byte, selon la commission de terminologie) doive avoir 8 bits, il peut aussi en avoir 32 (et sur un DSP, cela devient plausible, ce n'est pas le cas sur Unix ou Windows).
Antoine
Dominique Baldo
Vincent Lefevre nous disait
et j'aurais préféré un truc plus court genre (tapez pas merci ;o) ): transpose[u'é']='e'
transpose[(unsigned) 'é'] = 'e'
J'espère que tu as assez de mémoire sur les implémentations où l'encodage est en UTF-8. :)
... d'où l'intérêt de mon &255 initial; même si ça ne fera pas forcément ce que je veux au moins je n'explose pas mon tableau.
Vincent Lefevre nous disait
et j'aurais préféré un truc plus court genre (tapez pas merci ;o) ):
transpose[u'é']='e'
transpose[(unsigned) 'é'] = 'e'
J'espère que tu as assez de mémoire sur les implémentations où
l'encodage est en UTF-8. :)
... d'où l'intérêt de mon &255 initial; même si ça ne fera pas forcément
ce que je veux au moins je n'explose pas mon tableau.