Nous savons que l'opérateur ternaire est implémenté à la place de la clause if..else. Il est représenté par ?:. '? Le symbole ' est équivalent à la partie if et ':' est équivalent à la partie else. Les 3 programmes suivants expliquent quelques observations intéressantes dans le cas de l'opérateur ternaire.
Le programme suivant se compile sans aucune erreur. Le type de retour d'une expression ternaire devrait être float (comme exp2), et exp3 (c'est-à-dire un type littéral zéro - int) est implicitement convertible en float.
#includeusing namespace std; int main(){ int test1 = 0; float fvalue = 3.111f; cout<< (test1 ? fvalue : 0) << endl; return 0; }
Le programme suivant ne sera pas compilé car le compilateur ne peut pas localiser ou trouver le type de retour de l'expression ternaire, ou il n'y a pas de conversion implicite entre exp2 (tableau de caractères) et exp3 (int).
#includeusing namespace std; int main(){ int test1 = 0; cout<< test1 ? "A String" : 0 << endl; return 0; }
Le programme suivant peut être capable de se compiler, mais échoue lors de son exécution. Le type de retour d'une expression ternaire est limité au type (char *), mais l'expression renvoie un int, donc le programme échoue. Littéralement, le programme tente d'imprimer la chaîne à la 0ème adresse au moment de l'exécution ou de l'exécution.
#includeusing namespace std; int main(){ int test1 = 0; cout << (test1 ? "A String" : 0) << endl; return 0; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!