Explication détaillée de l'opérateur ternaire
Pour certaines structures de branche de sélection, des opérateurs conditionnels simples peuvent être utilisés à la place . Par exemple :
if(a<b) min=a; else min=b;
peut être traité avec l'opérateur conditionnel suivant
min=(a<b)?a:b;
où "(a
L'opérateur conditionnel se compose de deux symboles "?" et ":". Il nécessite trois objets opérationnels, c'est pourquoi il est également appelé opérateur ternaire. C'est le seul opérateur ternaire du langage C. opérateur.
Sa forme générale est :
表达式1?表达式2:表达式3;
Voici quelques notes sur les opérateurs conditionnels :
(1) L'expression 1 est une relation expression ou expression logique, utilisée pour décrire des conditions, l'expression 2 et l'expression 3 peuvent être des constantes, des variables ou des expressions. Par exemple :
(x==y)?'Y':'N' (d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d) ch=(ch>='A'&&ch<='Z')?(ch+32):ch
Les expressions ci-dessus sont toutes des expressions conditionnelles légales.
Recommandations associées : "FAQ"
(2) Ordre d'exécution : résolvez d'abord l'expression 1. Si la valeur est différente de 0, cela signifie la condition. est vrai. , puis recherchez l'expression 2. À ce stade, la valeur de l'expression 2 est utilisée comme valeur de l'expression conditionnelle entière
Si la valeur de l'expression 1 est 0, cela signifie que ; la condition est fausse, puis résolvez l'expression 3. La valeur de l'expression 3 est la valeur de l'expression conditionnelle entière. Par exemple :
(a>=0)?a:-a Le résultat de l'exécution est la valeur absolue de a
(3) Dans le programme, en mettant l'expression conditionnelle La valeur est affectée directement à une variable. Par exemple :
min=(a
(4) La priorité des expressions conditionnelles est seulement supérieure à l'opérateur d'affectation, mais inférieure à tous les opérateurs rencontrés précédemment.
Par conséquent, min=(a
(5 ) Condition Le sens de combinaison des opérateurs est "de droite à gauche".
(6) Les expressions conditionnelles peuvent être imbriquées, c'est-à-dire que l'expression 2 et l'expression 3 dans l'expression conditionnelle peuvent être une autre expression conditionnelle. Par exemple :
x>0?1:x<0?-1:0
Dans l'expression conditionnelle ci-dessus, la 3ème partie de l'expression est une autre expression conditionnelle. Selon l'associativité de l'expression conditionnelle, l'expression conditionnelle ci-dessus équivaut à :
x>0?1:(x<0?-1:0)
Sa fonction est de déterminer le signe de x. Lorsque x est un nombre positif, la valeur de l'expression conditionnelle est 1 ; lorsque x est un nombre négatif, la valeur de l'expression conditionnelle est -1 ; lorsque x est 0, la valeur de l'expression conditionnelle est 0.
(7) L'expression conditionnelle peut remplacer l'instruction if uniquement lorsque l'instruction intégrée dans l'instruction if est une instruction d'affectation (et que les deux branches attribuent des valeurs à la même variable). Par exemple :
if(a%2==0) printf("even/n"); else printf("odd/n");
ne peut pas s'écrire comme :
(a%2==0)?printf("even/n"):printf("odd/n");
mais il peut être remplacé par l'instruction suivante :
printf("%s/n",(a%2==0?"even":"odd");
La fonction de cette instruction est : if a est un nombre pair, sortie paire ; Si a est un nombre impair, sortie impaire.
(8) Les types d'expression 1, expression 2 et expression 3 peuvent être différents. À l’heure actuelle, le type de valeur de l’expression conditionnelle est le type le plus élevé parmi eux. Par exemple :
main() { char c1, ch; ch = getchar(); c1 = ch <= 'Z' && ch >= 'A' ? ' @ ' : ch ; putchar(c1); }
La fonction de ce programme est de saisir n'importe quel caractère à partir du clavier et de déterminer s'il s'agit de lettres majuscules. Si c'est le cas, affichez un @ ; , la ligne 6 du programme est l'instruction clé, cette instruction implémente le jugement, la sélection et le remplacement des caractères d'entrée.
Le processus d'exécution est le suivant : tout d'abord, l'opérateur conditionnel situé à droite du numéro d'affectation dans cette instruction juge et sélectionne les caractères d'entrée si ch>='A'&&ch<='Z' est vrai, expliquez que ch est une lettre anglaise majuscule, alors sélectionnez @ à ce moment-là ; sinon, sélectionnez toujours le caractère d'origine ch, puis attribuez le résultat sélectionné à la variable d'origine ch.
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!