Dois-je utiliser printf ("\ n") ou putchar ('\ n') pour imprimer une nouvelle ligne dans C?
Quand j'écris un programme en C, j'ai souvent l'impression d'un retour à la ligne par lui-même. Je sais que vous pouvez le faire de deux façons au moins: printf("\n")
et putchar('\n')
mais je ne suis pas sûr de qui est le meilleur choix en termes de style et, éventuellement, de l'efficacité. Existe-il des pratiques exemplaires pour l'utilisation de l'un sur l'autre? Est-il vraiment important?
source d'informationauteur Courtney Pattison
Vous devez vous connecter pour publier un commentaire.
À ne pas faire de différence lequel vous avez choisi si vous utilisez un compilateur moderne[1]. Prenez par exemple les éléments suivants du code C.
Lorsqu'il est compilé avec
gcc -O1
(les optimisations activées), nous obtenons les suivantes (identiques) en code machine dans les deuxfoo
etbar
:Les deux
foo
etbar
retrouvez l'appelputchar('\n')
. En d'autres termes, moderne compilateurs C sont assez intelligents pour optimiserprintf
appels de manière très efficace. Juste à choisir celui qui vous semble le plus clair et lisible.cl
un compilateur moderne.Laisser le style des lecteurs de la décision.
Depuis l'efficacité de l'exécution est le même ou presque identiques, utiliser le style le mieux réussi à faire passer le plus grand du code de la fonction.
Si la fonction a eu beaucoup de
printf()
séjour avecprintf("\n")
.De même pour
putchar('\n')
etputs("")
Il n'a pas vraiment d'importance. Je n'ai jamais rencontré un cas étaient d'impression à la console jamais affaire à quelqu'un en termes de fonctions de choix ou de l'efficience.
printf
etputchar
sont à la fois des fonctions de stdio, de sorte qu'ils deux, de la mêmeFILE
la poignée (plutôt que directement vers le descripteur de fichier).Cependant,
printf
est beaucoup plus lourds depuis le premier argument est une chaîne de format qui doit être scanné pour le remplacement d'expressions et s'échappe.Donc, à la fois
printf("\n")
etputchar('\n')
fera la même chose, mais celle-ci sera plus rapide.printf est beaucoup plus lente, car la chaîne de format est analysée au moment de l'exécution. Bien sûr, la moyenne de programme de devoirs ou de simple Projet Euler solution est si petit que perdre quelques cycles CPU n'a pas d'importance de toute façon.
Je voudrais aller avec
putchar
que la chaîne de caractères dansprintf
doit être analysée. Devrait être légèrement plus rapide - mais probablement pas beaucoup.