Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

constante unsigned int

64 réponses
Avatar
Dominique Baldo
Est ce qu'il y a moyen de faire proprement et simplement la chose
suivante (et pas propre):

unsigned int c;
c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.

10 réponses

1 2 3 4 5
Avatar
Vincent Lefevre
Dans l'article ,
Dominique Baldo écrit:

Est ce qu'il y a moyen de faire proprement et simplement la chose
suivante (et pas propre):

unsigned int c;
c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.


c = (unsigned char) 'é';

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% validated (X)HTML - Acorn / RISC OS / ARM, free software, YP17,
Championnat International des Jeux Mathématiques et Logiques, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Stephane Legras-Decussy
"Vincent Lefevre" <vincent+ a écrit dans le message de news:
20040705231733$

c = (unsigned char) 'é';


on n'a pas le droit de mettre des caractères accentués dans un code
"propre" , non ?

Avatar
Alexandre BACQUART
Dominique Baldo wrote:

Est ce qu'il y a moyen de faire proprement et simplement la chose
suivante (et pas propre):

unsigned int c;
c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.


Pourquoi le +256 (qui ne sert à rien) ? En fait, qu'as-tu véritablement
l'intention de faire ?

En tous cas, pour un entier :

(x + 256) & 255 == x & 255

Et d'ailleurs, tu peux très bien faire :

unsigned int c;
c = 'é';

Ca, c'est propre. Tu n'as rien à forcer car les conversions implicites
s'appliquent et il n'y aucune perte. Dans l'autre sens, il y a perte et
il faut caster.



--
Tek

Avatar
Alexandre BACQUART
Vincent Lefevre wrote:

Dans l'article ,
Dominique Baldo écrit:


Est ce qu'il y a moyen de faire proprement et simplement la chose
suivante (et pas propre):



unsigned int c;
c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.



c = (unsigned char) 'é';


Non, pas propre : cast superflu ET déroutant (même si cela marche).

--
Tek


Avatar
Gabriel Dos Reis
"Stephane Legras-Decussy" <pas de mail @ pas de mail> writes:

| "Vincent Lefevre" <vincent+ a écrit dans le message de news:
| 20040705231733$
| >
| > c = (unsigned char) 'é';
|
| on n'a pas le droit de mettre des caractères accentués dans un code
| "propre" , non ?

Définis « propre ».

-- Gaby
Avatar
Gabriel Dos Reis
Alexandre BACQUART writes:

| Vincent Lefevre wrote:
|
| > Dans l'article ,
| > Dominique Baldo écrit:
| >
| >> Est ce qu'il y a moyen de faire proprement et simplement la chose
| >> suivante (et pas propre):
| >
| >>unsigned int c;
| >>c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.
| > c = (unsigned char) 'é';
|
| Non, pas propre : cast superflu ET déroutant (même si cela marche).

N'importe quoi.

-- Gaby
Avatar
Gabriel Dos Reis
Alexandre BACQUART writes:

| Dominique Baldo wrote:
|
| > Est ce qu'il y a moyen de faire proprement et simplement la chose
| > suivante (et pas propre):
| > unsigned int c;
| > c=('é'+256)&255; // forçage de 'é' en unsigned int voire unsigned char.
|
| Pourquoi le +256 (qui ne sert à rien) ? En fait, qu'as-tu
| véritablement l'intention de faire ?
|
| En tous cas, pour un entier :
|
| (x + 256) & 255 == x & 255

Faux.

-- Gaby
Avatar
Eric Lévénez
Le 6/07/04 2:46, dans <40e9f5cd$0$23504$, « Alexandre
BACQUART » a écrit :

Vincent Lefevre wrote:

c = (unsigned char) 'é';


Non, pas propre : cast superflu ET déroutant (même si cela marche).


Ça ne marche pas toujours, en particulier avec un système qui utilise
l'UTF-8 comme Mac OS X.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
cedric
Gabriel Dos Reis wrote:
| En tous cas, pour un entier :
|
| (x + 256) & 255 == x & 255

Faux.


Uniquement en complément à deux, ou si x est positif, non ?

Avatar
cedric
Eric Lévénez wrote:
c = (unsigned char) 'é';



Ça ne marche pas toujours, en particulier avec un système qui utilise
l'UTF-8 comme Mac OS X.


Et dans ce cas il se passe quoi ? 'é' est de type wchar ou un truc comme
ca ?



1 2 3 4 5