„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum gibt „cout“ „1“ aus, wenn ein Funktionszeiger ohne Klammern verwendet wird?

Warum gibt „cout“ „1“ aus, wenn ein Funktionszeiger ohne Klammern verwendet wird?

Veröffentlicht am 07.11.2024
Durchsuche:298

Why Does \

Warum gibt „eine Funktion aus, ohne sie aufzurufen (nicht f(), sondern f;). Immer 1 drucken?“

In diesem Code versucht der Code, eine Funktion namens pr ohne die Verwendung von Klammern aufzurufen. Dies ist jedoch kein eigentlicher Aufruf der Funktion. Stattdessen wird der Funktionszeiger an die cout-Funktion übergeben. Wenn der Funktionszeiger implizit in einen Bool-Wert konvertiert wird, wird er als wahr ausgewertet. Da true in C äquivalent zu 1 ist, ist die Ausgabe immer 1.

Zur Verdeutlichung: Die folgenden Zeilen aus dem bereitgestellten Code rufen nicht die PR-Funktion auf:

pr;
cout 

Um die PR-Funktion wirklich aufzurufen, müssten Sie Klammern wie pr() verwenden.

Dies Das Verhalten ergibt sich aus der Tatsache, dass Funktionszeiger implizit in bool konvertierbar sind. In C 11 ist es möglich, den Operator

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3