Heim > Backend-Entwicklung > C++ > Warum unterscheidet sich „sizeof('a')' zwischen C und C?

Warum unterscheidet sich „sizeof('a')' zwischen C und C?

Patricia Arquette
Freigeben: 2024-12-26 07:22:29
Original
231 Leute haben es durchsucht

Why Does `sizeof('a')` Differ Between C and C  ?

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'));
}
Nach dem Login kopieren

Bei der Ausführung gibt dieses Programm Folgendes aus:

sizeof(char) = 1
sizeof('a')  = 4
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

Bei der Ausführung in C wird Folgendes ausgegeben:

sizeof(char) = 1
sizeof('a')  = 1
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage