Opérateurs ternaires et Retour en C
Pourquoi ne pas utiliser un mot-clé à l'intérieur ternaire opérateurs en C, comme ceci:
sum > 0 ? retour 1 : return 0;
source d'informationauteur nullpointerexception | 2010-08-25
Vous devez vous connecter pour publier un commentaire.
return
est une instruction. Les instructions ne peuvent pas être utilisés à l'intérieur des expressions de cette manière.En raison d'une opération ternaire est une expression et vous ne pouvez pas utiliser des énoncés dans expresssions.
Vous pouvez facilement utiliser un opérateur ternaire dans un retour bien.
Ou DrDipShit souligné:
L'opérateur ternaire traite dans les expressions, mais
return
est une instruction.La syntaxe de la
return
déclaration estreturn
expr;
La syntaxe de l'opérateur conditionnel ternaire est
expr1
?
expr2:
expr3De sorte que vous pouvez brancher dans une invocation de l'opérateur ternaire comme le expr dans un
return
déclaration. Mais vous ne pouvez pas brancher dans unereturn
déclaration expr2 ou expr3 d'un opérateur ternaire.L'expression ternaire agit un peu comme un
if
déclaration, mais il n'est pas un remplacement exact pour unif
déclaration. Si vous voulez écrirevous pouvez l'écrire comme un vrai
if
déclaration, mais vous ne pouvez pas convertir à l'aide de? :
sans réarrangement un peu, comme nous l'avons vu ici.Parce que
return
est un état, pas une expression. Vous ne pouvez pas faireint a = return 1;
.Voir la syntaxe d'un opérateur ternaire est
où
expr1
expr2
expr3
sont des expressions;L'opérateur
?:
fonctionne comme suitexpr1
est évalué en premier, s'il est vraiexpr2
est évaluée autrementexpr3
est évaluée.de là, dans les expressions de la retour déclaration ne peut pas être utilisé en langage C.
La
return
déclaration est utilisé pour le retour d'unfunction
vous ne pouvez pas utiliser à l'intérieur d'opérateur ternaire.vous pouvez le faire comme
La syntaxe d'un opérateur ternaire suit
où
expr1
expr2
expr3
sont des expressions etreturn
est un état, pas une expression.Juste en regardant la syntaxe, vous devriez savoir qu'une déclaration ne peut pas être utilisé dans une expression.
Ce que vous voulez peut être réalisée par:
return sum > 0 ? 1 : 0;