Einige interessante Beobachtungen zum ternären C/C++-Operator

PHPz
Freigeben: 2023-09-15 19:29:02
nach vorne
1118 Leute haben es durchsucht

Einige interessante Beobachtungen zum ternären C/C++-Operator

Wir wissen, dass der ternäre Operator anstelle der if..else-Klausel implementiert ist. Es wird durch ?: dargestellt. '? Das '-Symbol entspricht dem if-Teil und ':' entspricht dem else-Teil. Die folgenden 3 Programme erklären einige interessante Beobachtungen im Fall des ternären Operators.

Das folgende Programm lässt sich fehlerfrei kompilieren. Es wird erwartet, dass der Rückgabetyp eines ternären Ausdrucks float ist (wie exp2), und exp3 (d. h. ein literaler Null-Int-Typ) ist implizit in float konvertierbar.

#include  using namespace std; int main(){ int test1 = 0; float fvalue = 3.111f; cout<< (test1 ? fvalue : 0) << endl; return 0; }
Nach dem Login kopieren

Das folgende Programm lässt sich nicht kompilieren, weil der Compiler den Rückgabetyp des ternären Ausdrucks nicht finden oder finden kann oder es keine implizite Konvertierung zwischen exp2 (char array) und exp3 (int) gibt.

#include  using namespace std; int main(){ int test1 = 0; cout<< test1 ? "A String" : 0 << endl; return 0; }
Nach dem Login kopieren

Das folgende Programm kann möglicherweise kompiliert werden, schlägt jedoch bei der Ausführung fehl. Der Rückgabetyp eines ternären Ausdrucks ist auf den Typ (char *) beschränkt, der Ausdruck gibt jedoch ein int zurück, sodass das Programm fehlschlägt. Im wahrsten Sinne des Wortes versucht das Programm, die Zeichenfolge zur Ausführungszeit oder Laufzeit an der 0. Adresse zu drucken.

#include  using namespace std; int main(){ int test1 = 0; cout << (test1 ? "A String" : 0) << endl; return 0; }
Nach dem Login kopieren
Wir können beobachten, dass exp2 als Ausgabetyp behandelt wird und exp3 zur Ausführungszeit oder Laufzeit in exp2 konvertiert werden kann. Wenn die Konvertierung als implizit betrachtet wird, wird dies der Compiler tun Konvertierten Stub einfügen. Der Compiler gibt einen Fehler aus, wenn die Konvertierung als expliziter Vorgang behandelt wird. Wenn ein Compiler solche Fehler ignorieren kann, schlägt das Programm möglicherweise zur Ausführungszeit oder zur Laufzeit fehl.

Das obige ist der detaillierte Inhalt vonEinige interessante Beobachtungen zum ternären C/C++-Operator. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
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 Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!