Maison  >  Article  >  développement back-end  >  Quelques observations intéressantes sur l'opérateur ternaire C/C++

Quelques observations intéressantes sur l'opérateur ternaire C/C++

PHPz
PHPzavant
2023-09-15 19:29:021161parcourir

Quelques observations intéressantes sur lopérateur ternaire C/C++

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.

#include <iostream>
using 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).

#include <iostream>
using 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.

#include <iostream>
using namespace std;
int main(){
   int test1 = 0;
   cout << (test1 ? "A String" : 0) << endl;
   return 0;
}
Nous pouvons observer que exp2 est traité comme type de sortie et exp3 pourra être converti en exp2 au moment de l'exécution ou de l'exécution. Si la conversion est considérée comme implicite, le compilateur Insérez le stub converti. Le compilateur générera une erreur si la conversion est traitée comme une opération explicite. Si un compilateur est capable d'ignorer de telles erreurs, le programme peut échouer au moment de l'exécution ou de l'exécution.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer