2015-12-23 5 views
5
char c = 'A'; 
printf("%d\n",sizeof(c));// output = 1 
printf("%d\n",sizeof('A')); // output = 4 

Warum der Operator sizeof gibt unterschiedliche Ausgabe für das gleiche Zeichen? Bitte HilfeVerstehen der Größe des Bedieners in C

+0

Weil 'A' keinen Typ hat. Es wird als "int" interpretiert. –

+2

@DavidHoelzer es hat einen Typ, und der Typ ist "int" –

+0

Fair genug. Da 'A' in keiner Weise besetzt ist, ist es definitionsgemäß ein 'int'. Ich konzentrierte mich mehr auf die Tatsache, dass es einen Unterschied in der Definition gab. Vielen Dank! –

Antwort

6

c ist eine Variable vom Typ char; seine Größe ist 1 Byte.

'A' ist ein int Literal - fragen Sie mich nicht, warum der Standard das sagt. Seine Größe ist 4 Bytes auf Ihrer Plattform (das gleiche wie sizeof(1)).

+0

In den alten Zeiten verwendeten die Leute Multibyte-Zeichen wie "xy". Der PDP11-UNIX-Code hatte viel von dem Zeug. Es ging meistens weg, wenn sie C zu Bigendian Maschinen portierten. C++ hat das behoben ... Zeichenkonstanten sind Zeichen. Dies ist eine der wenigen Möglichkeiten, in denen C keine richtige Teilmenge von C++ ist. –