Heim > Backend-Entwicklung > C++ > Warum gibt derselbe Code in C „Hallo' und in C „Nichts' aus?

Warum gibt derselbe Code in C „Hallo' und in C „Nichts' aus?

Mary-Kate Olsen
Freigeben: 2024-11-09 16:25:03
Original
769 Leute haben es durchsucht

Why Does the Same Code Print

Verhaltensunterschiede im gültigen Code zwischen C und C

Während C und C viele Gemeinsamkeiten aufweisen, gibt es einige Fälle, in denen in beiden gültiger Code vorhanden ist Sprachen können unterschiedliche Ergebnisse liefern, wenn sie in der jeweiligen Sprache kompiliert werden.

Funktionsaufruf und Objekt Deklarationen

Ein solches Szenario hängt mit dem Unterschied zwischen Funktionsaufrufen und Objektdeklarationen zusammen. In C90 können Funktionen aufgerufen werden, ohne dass sie vorher deklariert werden müssen. In C sind nicht deklarierte Funktionen jedoch nicht erlaubt. Diese Unterscheidung kann zu unterschiedlichem Verhalten beim Kompilieren des folgenden Codes führen:

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
Nach dem Login kopieren

In C gibt dieser Code nichts aus, da ein temporäres Objekt vom Typ f erstellt und zerstört wird, was zum Verlust des x-Mitglieds führt . In C90 wird jedoch „Hallo“ ausgegeben, da Funktionen aufgerufen werden können, ohne dass sie deklariert wurden.

Begriffsklärung von Namen

Ein weiterer zu beachtender Punkt ist die Verwendung von der Name f im Beispielcode. Sowohl C als auch C erlauben die Verwendung desselben Namens für Funktionen und Strukturen. Um ein Objekt in C zu erstellen, muss struct f explizit angegeben werden. Wenn das Schlüsselwort struct weggelassen wird, wird der Code als Funktionsaufruf interpretiert. Diese Unterscheidung trägt zusammen mit den unterschiedlichen Aufrufkonventionen zu dem unterschiedlichen Verhalten bei, das beim Kompilieren des Codes in C und C beobachtet wird.

Das obige ist der detaillierte Inhalt vonWarum gibt derselbe Code in C „Hallo' und in C „Nichts' aus?. 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