Re: question C

Top Page

Reply to this message
Author: Nicolas TRIPON
Date:  
To: guilde
Subject: Re: question C
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'.