2010-06-17 9 views
3
if (myFloat == nil){ 
    \\Do Method 
} 

Dans la situation ci-dessus, la méthode ne fonctionnera que si myFloat est nil. Est-ce qu'il fonctionnera également si myFloat a été défini sur 0?différence entre un ensemble de variables à zéro et 0

+0

Est-ce que myFloat est un type float? Si c'est le cas, vous ne devriez jamais le définir/le comparer à 'nil', ce qui n'est valable que pour les références d'objets. C'est une comparaison entre les pommes et les oranges, même si dans ce cas précis, cela peut fonctionner, car zéro et zéro sont essentiellement la même chose lorsque le code est compilé. –

+0

Existe-t-il un équivalent nul pour les types comme float? –

+0

@G P Burdell: Non, il n'y en a pas parce que float n'est pas un type de pointeur. Eh bien, en fait, je suppose que vous pourriez utiliser NaN pour les valeurs à virgule flottante. http://steve.hollasch.net/cgindex/coding/ieeefloat.html – JeremyP

Répondre

2

nil ne doit être utilisé qu'avec des pointeurs. Il indique que le pointeur n'a pas été défini sur une valeur. Les flotteurs et les autres types C ont juste une valeur.

(Strictement float et double peut éventuellement avoir des valeurs comme NaN, mais cela est plus difficile à gérer)

En Objective C vous pouvez envelopper un float dans la classe NSNumber. Un objet de cette classe est référencé par un pointeur de sorte qu'une variable de type NSNumber * peut être nulle.

+0

Eh bien, spécifiquement les types d'ID ne pointent pas vers les types C. – BobbyShaftoe

+0

@DavidGorsline Les mots de surlignage ne sont pas une modification valide voir http://meta.stackexchange.com/questions/155904/highlighting-technical-words/155906#155906 – Mark

+0

@Mark Merci pour le conseil/rappel. –

0

Eh bien, rien n'est techniquement égal à 0. Cependant, cela dépend en partie du type de variable myFloat. Si myFloat est un flottant C, vous ne pouvez pas en faire exactement 0. Vous devriez vraiment utiliser nil sur les types d'id.

+0

Mais que dois-je utiliser pour les types primitifs comme float? –

+0

Cela dépend de ce que vous faites. Si vous avez un pointeur vers un flottant, vous pouvez le comparer à 0. Cependant, vous devriez regarder comment les nombres à virgule flottante sont représentés sur un ordinateur. – BobbyShaftoe

Questions connexes