Pourquoi écrire que 1 000 000 000 d'1000*1000*1000 en C?

Dans le code créé par Apple, il y a cette ligne:

CMTimeMakeWithSeconds( newDurationSeconds, 1000*1000*1000 )

Est-il une raison à exprimer 1,000,000,000 comme 1000*1000*1000?

Pourquoi ne pas 1000^3 pour que la matière?

  • La clarté et la lisibilité du code. Vous ne pouvez pas le mettre , ou " comme séparateurs dans C, de sorte que la prochaine meilleure chose, c'est le calcul de la valeur à partir d'une multiplication. ^ est un autre opérateur en C - OU-exclusif.
  • il est surtout utilisé pour des durées comme : 2*60*60 .. c'est facile de remarquer que est de 2 heures..
  • Pour celui que je soupçonne 1,000,000,000 n'est pas valide la syntaxe
  • Même s'il était valide la syntaxe, de la syntaxe doivent être localisées. Dans de grandes parties du monde", " est la marque décimale.
  • Par la voie, de langages de programmation modernes ont autre façon d'écrire la même chose, par exemple dans Swift 1_000_000_000. Cependant, avec des constantes de temps c'est plus difficile. C'est plus lisible d'écrire 30 * 60 (30 minutes en secondes) que de l'écrire 1800. Il ya effectivement des langues qui va vous permettre d'écrire des unités, par exemple meters, vous permettant de vous protéger contre les mauvaises affectations.
  • Un plus léger avantage de 1000*1000*1000 plus de 1000^3 (si l'alimentation de l'opérateur existe dans la langue), c'est qu'il est plus facile de voir l'ordre de grandeur rapidement.
  • Pour la même raison 1.0f / 255 est plus lisible que 0.0039215689f. Voir ce post.
  • Aussi, comme une note de côté, si il y en a de beaucoup de travail avec les unités physiques, regardez pour les bibliothèques qui fournissent des classes pour les unités d'écrire, par exemple, 1000 * Kilometers ou 15_min.
  • ^ est un XOR, pas un exposant ou de la puissance de l'opérateur.
  • Voir ce commentaire.
  • En C++, 1,000,000,000 est une erreur de syntaxe, et evalues pour 0.
  • comme pour moi, il est plus à l'aise de voir que 1e9 1000*1000*1000 🙂
  • Êtes-vous demander à propos de C ou Objective-C?
  • bien, mais ce serait un double littérale, pas un int.
  • euh...de sorte que vous pouvez le convertir en int en place si vous avez besoin d' 🙂
  • (1,000,000,000) == 0
  • C++ prend désormais en charge 1'000'000!
  • - Vous déjà entendu parler de l'erreur d'arrondi?
  • Lèche C spécifie le minimum de précision et une gamme de double. Le double de @kot331107, 1e9, est dans la gamme et exactement représentable comme un double, donc pas d'erreur d'arrondi se produit lors de la conversion de 32(plus) bits entier. Les plus grandes valeurs peuvent avoir arrondi.
  • FWIW, La gcc préprocesseur va accepter #define BILLION 1000 ## 000 ## 000, si le compilateur n'accepte pas 1000 ## 000 ## 000 comme un littéral. Vous ne savez pas si cela s'applique à objective-c ou pas.
  • Double Possible de Représentant des grands nombres dans le code source, pour des raisons de lisibilité?
  • connexes: Pourquoi le C analyseur de ne pas autoriser les espaces entre les chiffres d'un entier littéral?, Pourquoi le caractère espace n'a pas choisie pour C++14 chiffres de séparateurs?
  • erreur d'arrondi avec (int)1e9 ?
  • Peut-être pas pour cette valeur, mais si vous avez utilise habituellement le régime, vous obtiendrez peu.
  • D'accord, mais cette certaine valeur 1e9.

InformationsquelleAutor SpaceDog | 2016-11-16