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; }
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!