Mon petit programme:Qu'est-ce que - (- 128) pour un caractère à octet unique signé en C?
#include <stdio.h>
int main() {
signed char c = -128;
c = -c;
printf("%d", c);
return 0;
}
print:
-128
est de moins (-) portable sur CPU opérateur?
Est-ce que la norme ANSI C convertir les types primitifs ** int ** avant d'effectuer arithmétique opérations? Cela est vrai pour Java (en tant qu'états Java lang spec), mais est-ce vrai pour C? – gavenkoa
@gavenkoa Peut être votre réponse: [C 2011 (n1570) 6.3.1.8 ("Conversions arithmétiques usuelles") 1 indique que les promotions entières sont effectuées avant de considérer si les types sont les mêmes:] (http://stackoverflow.com/questions/12841278/char-and-the-habituel-arithmetic-conversion-rules) –
@gavenkoa: En gros, tout ce qui est "plus petit" qu'un int est promu en int pendant les opérations arithmétiques. Le résultat est ensuite attribué de nouveau sur le côté gauche. –