Heim > Artikel > Backend-Entwicklung > 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 <iostream> using namespace std; int main(){ int test1 = 0; float fvalue = 3.111f; cout<< (test1 ? fvalue : 0) << endl; return 0; }
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 <iostream> using namespace std; int main(){ int test1 = 0; cout<< test1 ? "A String" : 0 << endl; return 0; }
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 <iostream> using namespace std; int main(){ int test1 = 0; cout << (test1 ? "A String" : 0) << endl; return 0; }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!