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
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
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)
).
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. –
Weil 'A' keinen Typ hat. Es wird als "int" interpretiert. –
@DavidHoelzer es hat einen Typ, und der Typ ist "int" –
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! –