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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 07:22:29231Durchsuche

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'));
}

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!

Stellungnahme:
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