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

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

PHPz
Libérer: 2023-09-15 19:29:02
avant
1227 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion
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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal