107 votes

« f » après le numéro/flotteur en Objective-C/C

Je ne trouve pas cela dans les docs Apple donc : que signifie le « f » après les chiffres ici indiquent ? Est-ce de C ou Objective-C ? Y a-t-il une différence en n’ajoutant ne pas cela à un nombre constant ?

Pouvez-vous expliquer pourquoi je n’aurais pas il suffit d’écrire :

94voto

Frank Shearar Points 12481
<pre><code></code><p>utilisations flottent constantes. (La constante 0,0 déclare habituellement un double en Objective-C ; mettre un f sur la fin - 0.0f - déclare la constante comme un flotteur (32 bits)).</p><pre><code></code></pre><p>utilise des entiers (ints) qui est automatiquement converties à flotteurs.</p><p>Dans ce cas, il n’y a aucune différence (pratique) entre les deux.</p></pre>

61voto

epatel Points 32451

En cas de doute, vérifiez l'assembleur de sortie. Par exemple, écrire un petit, minime extrait de ie comme ceci

#import <Cocoa/Cocoa.h>

void test() {
  CGRect r = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
  NSLog(@"%f", r.size.width);
}

Puis le compiler pour l'assembleur avec l' -S option.

gcc -S test.m

Enregistrer l'assembleur de sortie en test.s fichier et supprimez .0f de la valeur des constantes et répétez la commande de la compilation. Puis faire un diff de la nouvelle - test.s et précédent. Pense que cela montre s'il y a des différences réelles. Je pense que trop d'avoir une vision de ce qu'ils pensent que le compilateur n', mais à la fin de la journée, il faut savoir comment vérifier toutes les théories.

44voto

Potatoswatter Points 70305

Parfois, il y a une différence.

28voto

NickLH Points 1845

Il indique à l’ordinateur qu’il s’agit une flottante point nombre (je suppose que vous êtes parle de c / c ++ ici). S’il n’y a aucun f après le nombre, il est considéré comme un double ou un entier (selon si il y a un nombre décimal ou non).

5voto

Hans Passant Points 475940

Un flottant littérale dans votre code source est analysé comme un double. De l'affecter à une variable de type float perdre de la précision. Beaucoup de précision, vous êtes en jetant 7 chiffres significatifs. Le "f" postfix vous permet de dire au compilateur: "je sais ce que je fais, c'est intentionnel. Ne pas de bug moi à ce sujet".

Les chances de produire un bug n'est pas que les petits btw. De nombreuses un programme a carénées sur le mal conçu floating point de comparaison ou bien, en supposant que de 0,1 est exactement représentable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X