Unterschiede in der Zeichengröße in C und C
In C und C liefert der Operator sizeof Informationen über die Größe eines Datentyps oder Variable. Durch die Untersuchung der Ausgabe eines Programms mit diesem Operator können Programmierer wichtige Details über die Daten erfahren, mit denen sie arbeiten. Überraschenderweise liefert der Operator „sizeof“ jedoch unterschiedliche Ergebnisse, wenn er auf einen Zeichenwert zwischen C und C angewendet wird.
Betrachten Sie das folgende C-Programm:
#include <stdio.h> int main(void) { printf("sizeof(char) = %zu\n", sizeof(char)); printf("sizeof('a') = %zu\n", sizeof('a')); }
Bei der Ausführung gibt dieses Programm Folgendes aus:
sizeof(char) = 1 sizeof('a') = 4
Schauen wir uns nun dasselbe in C geschriebene Programm an :
#include <iostream> int main() { std::cout << "sizeof(char) = " << sizeof(char) << std::endl; std::cout << "sizeof('a') = " << sizeof('a') << std::endl; }
Bei der Ausführung in C wird Folgendes ausgegeben:
sizeof(char) = 1 sizeof('a') = 1
Der Hauptunterschied liegt darin, wie C und C Zeichenkonstanten intern darstellen. In C wird eine Zeichenkonstante wie „a“ als Ganzzahl mit dem entsprechenden ASCII-Wert behandelt. Aus diesem Grund gibt sizeof('a') in C 4 zurück, da die Größe einer Ganzzahl normalerweise 4 Bytes beträgt. Andererseits werden in C Zeichenkonstanten als Datentyp char behandelt, der eine Größe von 1 Byte hat.
Das obige ist der detaillierte Inhalt vonWarum unterscheidet sich „sizeof('a')' zwischen C und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!