Quoting Laurent Vivier (Laurent.Vivier@???):
> Salut a tous,
>
> en ecrivant le petit programme suivant, j'ai
> eu des resultats bizarres:
>
> #include <stdio.h>
>
> int main(argc, argv)
> int argc;
> char** argv;
> {
> char c;
>
> c = -32;
>
> printf("%ld\n", (long)c);
>
> return 0;
> }
>
> Les resultats sont les suivant:
>
> AIX(PowerPC): 224
> Linux(PowerPC): 224
> Linux(Intel): -32
>
> Le resultat logique me semble etre -32.
> (Le bit de signe devrait etre etendu de char
> vers long).
En ANSI C, si `char c' est utilisé pour une quantité autre qu'un
caractère, son type peut être signé ou non-signé -- définit par
l'implémentation. Pour lever le doute, il faut le préciser : `signed char c'
ou `unsigned char c'.
Pour les deux premiers compilateurs, `char c' est `unsigned char c' ; pour
le dernier, `char c' est `signed char c'.