mio piccolo programma:Cos'è - (- 128) per il carattere a byte singolo con segno in C?
#include <stdio.h>
int main() {
signed char c = -128;
c = -c;
printf("%d", c);
return 0;
}
stampa:
-128
è meno (-) portatile operatore attraverso CPU?
non ANSI C convertire tipi primitivi a ** ** int prima di eseguire aritmetica operazioni? Questo è vero per Java (come afferma Java lang spec), ma è vero per C? – gavenkoa
@gavenkoa Potrebbe essere la tua risposta: [C 2011 (n1570) 6.3.1.8 ("Conversioni aritmetiche usuali") 1 afferma che le promozioni intere vengono eseguite prima di considerare se i tipi sono gli stessi:] (http://stackoverflow.com/questions/12841278/char-and-the-usual-arithmetic-conversion-rules) –
@gavenkoa: In parole povere, tutto ciò che è "più piccolo" di un 'int' viene promosso a' int' durante le operazioni aritmetiche. Il risultato viene quindi assegnato nuovamente sul lato sinistro. –