why sizeof ("- 2147483648") - 1

8

Beim Lesen von nginx Quellcode finde ich diese Zeile:

%Vor%

warum mit sizeof ("- 2147483648") - 1?

nicht sizeof (-2147483648) - 1

nicht -2147483648 - 1

nicht -2147483649 oder sonst?

Was ist der Unterschied?

    
NStal 19.11.2012, 03:58
quelle

1 Antwort

12

Im Grunde genommen ist -2147483648 die breiteste von allen 32-Bit-Ganzzahlen mit Vorzeichen, die für die Darstellung benötigt werden. Dieses Makro NGX_INT32_LEN definiert, wie viele Zeichen eine solche Ganzzahl lang sein kann.

Dazu wird der für diesen String benötigte Speicherplatz konstant gehalten und 1 subtrahiert (weil sizeof Platz für das nachfolgende NUL-Zeichen bietet). Es ist schneller als mit:

%Vor%

weil nicht alle Compiler das in die Konstante 11 übersetzen.

    
Edmund 19.11.2012, 04:05
quelle

Tags und Links