Bien que je ne l'aurais pas écrit moi-même, quel est le résultat attendu de l'instruction suivante où A
(garanti à zéro entier ou positif) est supérieur à 1?C: Quelle sera la déclaration 'return A || 1 'retour quand A> 1?
return A || 1;
Dans de nombreuses langues, je pense A
à retourner, à moins que la valeur de A
est égal à zéro, auquel cas 1 serait.
Je n'ai pas mon livre C à portée de main, mais je constate qu'en réalité, la valeur 1 semble toujours être retournée. Est-ce un résultat de l'optimisation du compilateur ou étant donné l'ambiguïté potentielle de l'expression, est-ce que la valeur de retour est non-déterministe?
Ne renvoie-t-il pas "YES", qui est ensuite converti en 1 si vous essayez de l'obtenir comme int? Je n'ai aucune idée de l'objectif C, je devine juste ici. (Un rapide google m'a dit que OUI est 'Vrai' de l'Objectif C.) – Stephen
Pas tout à fait ... 'YES' dans Objective-C est juste une macro donnant' 1'. Donc, il retourne juste '1'. Aucune conversion en 'bool' (ou' BOOL' ou '_Bool' ou autre) n'est impliquée. – Yuji
Peut-être que vous pensiez à 'return A? A: 1; ' –