Différentes lectures m'avaient fait admettre que le reste d'un entier
modulo 2 ie (x % 2) produisait un code équivalent à sa version bit à bit
ie (x & 1).
Avec gcc sous Ubuntu, et si l'option d'optimisation O2 est allumée, les
temps d'exécution sont quasi identiques. Sans option d'optimisation, la
version modulo est 30% moins rapide que la version bit à bit.
Par contre, sous Windows XP et avec MS Visual Express + options
d'optimisation activées, j'obtiens un écart significatif. Ci-dessous, le
code et l'affichage obtenu. Ces écarts m'ont été confirmés par d'autres
utilisateurs. Qu'en pensez-vous ?
N'existe pas. C'est printf("estpair%d : %.2f secondesnn", j, duree/NB_TESTS);
Non. "%lf" est tout à fait valide, même s'il est plus courant d'écrire "%f".
Oui, c'est correct en C99, mais pas en C90
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou non avec *toutes* les versions précédentes jusqu'au tout premier C de 1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010 tu feras toujours la même chose ? :->
-- Éric Lévénez FAQ de fclc : <http://www.levenez.com/lang/c/faq/>
-ed- a écrit :
On 31 oct, 12:53, Éric Lévénez <use...@levenez.com> wrote:
N'existe pas. C'est
printf("estpair%d : %.2f secondesnn", j, duree/NB_TESTS);
Non. "%lf" est tout à fait valide, même s'il est plus courant d'écrire "%f".
Oui, c'est correct en C99, mais pas en C90
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles
normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou
non avec *toutes* les versions précédentes jusqu'au tout premier C de
1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010
tu feras toujours la même chose ? :->
--
Éric Lévénez
FAQ de fclc : <http://www.levenez.com/lang/c/faq/>
N'existe pas. C'est printf("estpair%d : %.2f secondesnn", j, duree/NB_TESTS);
Non. "%lf" est tout à fait valide, même s'il est plus courant d'écrire "%f".
Oui, c'est correct en C99, mais pas en C90
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou non avec *toutes* les versions précédentes jusqu'au tout premier C de 1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010 tu feras toujours la même chose ? :->
-- Éric Lévénez FAQ de fclc : <http://www.levenez.com/lang/c/faq/>
candide
Éric Lévénez a écrit :
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou non avec *toutes* les versions précédentes jusqu'au tout premier C de 1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010 tu feras toujours la même chose ? :->
Quelqu'un a qualifié -ed- d'intégriste tout à l'heure, j'avais envie d'ajouter "integriste chapelle C90".
Déjà le problème avec la Norme C90 c'est qu'elle est introuvable, il me semble qu'elle n'est même plus en vente à l'ISO. J'ai la version papier éditée par H. Schildt mais elle a été mal éditée et une page sur fprint() a été oubliée, en plus il y a eu de substantielles modif en 1995 qui ne figurent pas dans le livre. Moi je trouve que pour la partie commune entre les deux Normes, le texte de C99 est beaucoup plus précis.
Néanmoins C90 reste quand même très utilisée (déjà Visual C++). Et par exemple CPython est totalement écrit en C ansi. Donc je comprends que l'on reste attaché à C90.
Éric Lévénez a écrit :
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles
normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou
non avec *toutes* les versions précédentes jusqu'au tout premier C de
1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010
tu feras toujours la même chose ? :->
Quelqu'un a qualifié -ed- d'intégriste tout à l'heure, j'avais envie
d'ajouter "integriste chapelle C90".
Déjà le problème avec la Norme C90 c'est qu'elle est introuvable, il me
semble qu'elle n'est même plus en vente à l'ISO. J'ai la version papier
éditée par H. Schildt mais elle a été mal éditée et une page sur
fprint() a été oubliée, en plus il y a eu de substantielles modif en
1995 qui ne figurent pas dans le livre. Moi je trouve que pour la partie
commune entre les deux Normes, le texte de C99 est beaucoup plus précis.
Néanmoins C90 reste quand même très utilisée (déjà Visual C++). Et par
exemple CPython est totalement écrit en C ansi. Donc je comprends que
l'on reste attaché à C90.
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou non avec *toutes* les versions précédentes jusqu'au tout premier C de 1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010 tu feras toujours la même chose ? :->
Quelqu'un a qualifié -ed- d'intégriste tout à l'heure, j'avais envie d'ajouter "integriste chapelle C90".
Déjà le problème avec la Norme C90 c'est qu'elle est introuvable, il me semble qu'elle n'est même plus en vente à l'ISO. J'ai la version papier éditée par H. Schildt mais elle a été mal éditée et une page sur fprint() a été oubliée, en plus il y a eu de substantielles modif en 1995 qui ne figurent pas dans le livre. Moi je trouve que pour la partie commune entre les deux Normes, le texte de C99 est beaucoup plus précis.
Néanmoins C90 reste quand même très utilisée (déjà Visual C++). Et par exemple CPython est totalement écrit en C ansi. Donc je comprends que l'on reste attaché à C90.
espie
In article <4aede479$0$30846$, candide wrote:
Éric Lévénez a écrit :
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou non avec *toutes* les versions précédentes jusqu'au tout premier C de 1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010 tu feras toujours la même chose ? :->
Quelqu'un a qualifié -ed- d'intégriste tout à l'heure, j'avais envie d'ajouter "integriste chapelle C90".
Déjà le problème avec la Norme C90 c'est qu'elle est introuvable, il me semble qu'elle n'est même plus en vente à l'ISO. J'ai la version papier éditée par H. Schildt mais elle a été mal éditée et une page sur fprint() a été oubliée, en plus il y a eu de substantielles modif en 1995 qui ne figurent pas dans le livre. Moi je trouve que pour la partie commune entre les deux Normes, le texte de C99 est beaucoup plus précis.
Le seul interet de C90, c'est quand il y a des bouts de C99 qui ne sont pas uniformement supportes. La difference etait tres importante il y a 5 ans, bien moins maintenant.
Le fait que le texte soit trouvable ou pas, c'est juste po juste pour les chti djeunz comme toi. Les vieux cons dans mon genre, on a notre memoire pour nous, et on sait sur quoi on s'est fait avoir, ou pas.
Ne pas oublier la marche inexorable du progres (et les conneries integristes de la FSF, du cote "je ne separe pas ma front-end de ma back-end", qui font que certains processeurs ne sont pas pleinement supportes par gcc 3. ce qui fait par exemple que certaines constructions C99 (definitions de variable n'importe ou dans le bloc) sont interdites dans OpenBSD... juste parce qu'on supporte encore et toujours des archis qui n'ont pas pu passer en gcc3...
... et donc que les distinctions C89/C99, au moins pour certaines, ont encore leur importance pratique.
Pour un candide qui ne pratique le C que en tant qu'exercice theorique, bien sur, ce genre de pinaillage ne presente aucun interet... ;-/
In article <4aede479$0$30846$426a34cc@news.free.fr>,
candide <candide@free.invalid> wrote:
Éric Lévénez a écrit :
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles
normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou
non avec *toutes* les versions précédentes jusqu'au tout premier C de
1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010
tu feras toujours la même chose ? :->
Quelqu'un a qualifié -ed- d'intégriste tout à l'heure, j'avais envie
d'ajouter "integriste chapelle C90".
Déjà le problème avec la Norme C90 c'est qu'elle est introuvable, il me
semble qu'elle n'est même plus en vente à l'ISO. J'ai la version papier
éditée par H. Schildt mais elle a été mal éditée et une page sur
fprint() a été oubliée, en plus il y a eu de substantielles modif en
1995 qui ne figurent pas dans le livre. Moi je trouve que pour la partie
commune entre les deux Normes, le texte de C99 est beaucoup plus précis.
Le seul interet de C90, c'est quand il y a des bouts de C99 qui ne sont
pas uniformement supportes. La difference etait tres importante il y a
5 ans, bien moins maintenant.
Le fait que le texte soit trouvable ou pas, c'est juste po juste pour les
chti djeunz comme toi. Les vieux cons dans mon genre, on a notre memoire
pour nous, et on sait sur quoi on s'est fait avoir, ou pas.
Ne pas oublier la marche inexorable du progres (et les conneries integristes
de la FSF, du cote "je ne separe pas ma front-end de ma back-end", qui font
que certains processeurs ne sont pas pleinement supportes par gcc 3.
ce qui fait par exemple que certaines constructions C99 (definitions de
variable n'importe ou dans le bloc) sont interdites dans OpenBSD... juste
parce qu'on supporte encore et toujours des archis qui n'ont pas pu passer
en gcc3...
... et donc que les distinctions C89/C99, au moins pour certaines, ont
encore leur importance pratique.
Pour un candide qui ne pratique le C que en tant qu'exercice theorique,
bien sur, ce genre de pinaillage ne presente aucun interet... ;-/
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou non avec *toutes* les versions précédentes jusqu'au tout premier C de 1972, pourquoi te limites-tu au C90 ? C'est 19 ans ta limite ? En 2010 tu feras toujours la même chose ? :->
Quelqu'un a qualifié -ed- d'intégriste tout à l'heure, j'avais envie d'ajouter "integriste chapelle C90".
Déjà le problème avec la Norme C90 c'est qu'elle est introuvable, il me semble qu'elle n'est même plus en vente à l'ISO. J'ai la version papier éditée par H. Schildt mais elle a été mal éditée et une page sur fprint() a été oubliée, en plus il y a eu de substantielles modif en 1995 qui ne figurent pas dans le livre. Moi je trouve que pour la partie commune entre les deux Normes, le texte de C99 est beaucoup plus précis.
Le seul interet de C90, c'est quand il y a des bouts de C99 qui ne sont pas uniformement supportes. La difference etait tres importante il y a 5 ans, bien moins maintenant.
Le fait que le texte soit trouvable ou pas, c'est juste po juste pour les chti djeunz comme toi. Les vieux cons dans mon genre, on a notre memoire pour nous, et on sait sur quoi on s'est fait avoir, ou pas.
Ne pas oublier la marche inexorable du progres (et les conneries integristes de la FSF, du cote "je ne separe pas ma front-end de ma back-end", qui font que certains processeurs ne sont pas pleinement supportes par gcc 3. ce qui fait par exemple que certaines constructions C99 (definitions de variable n'importe ou dans le bloc) sont interdites dans OpenBSD... juste parce qu'on supporte encore et toujours des archis qui n'ont pas pu passer en gcc3...
... et donc que les distinctions C89/C99, au moins pour certaines, ont encore leur importance pratique.
Pour un candide qui ne pratique le C que en tant qu'exercice theorique, bien sur, ce genre de pinaillage ne presente aucun interet... ;-/
Vincent Lefevre
Dans l'article <4aede479$0$30846$, candide écrit:
Néanmoins C90 reste quand même très utilisée (déjà Visual C++). Et par exemple CPython est totalement écrit en C ansi. Donc je comprends que l'on reste attaché à C90.
GCC se base aussi sur C90 par défaut, si bien que si on ne passe pas -stdÉ9 (ou gnu99), il y a des choses qui ne marchent pas.
Dans l'article <4aede479$0$30846$426a34cc@news.free.fr>,
candide <candide@free.invalid> écrit:
Néanmoins C90 reste quand même très utilisée (déjà Visual C++). Et par
exemple CPython est totalement écrit en C ansi. Donc je comprends que
l'on reste attaché à C90.
GCC se base aussi sur C90 par défaut, si bien que si on ne passe pas
-stdÉ9 (ou gnu99), il y a des choses qui ne marchent pas.
Néanmoins C90 reste quand même très utilisée (déjà Visual C++). Et par exemple CPython est totalement écrit en C ansi. Donc je comprends que l'on reste attaché à C90.
GCC se base aussi sur C90 par défaut, si bien que si on ne passe pas -stdÉ9 (ou gnu99), il y a des choses qui ne marchent pas.
GCC se base aussi sur C90 par défaut, si bien que si on ne passe pas -stdÉ9 (ou gnu99), il y a des choses qui ne marchent pas.
Tiens, je viens de me rendre compte d'une différence entre C90 et C99 plus ou moins en rapport avec le problème initial : en C90, lorsqu'un des opérandes a ou b est négatif, le signe du reste a%b est défini par l'implémentation. En C99 ce n'est plus le cas.
Vincent Lefevre a écrit :
GCC se base aussi sur C90 par défaut, si bien que si on ne passe pas
-stdÉ9 (ou gnu99), il y a des choses qui ne marchent pas.
Tiens, je viens de me rendre compte d'une différence entre C90 et C99
plus ou moins en rapport avec le problème initial : en C90, lorsqu'un
des opérandes a ou b est négatif, le signe du reste a%b est défini par
l'implémentation. En C99 ce n'est plus le cas.
GCC se base aussi sur C90 par défaut, si bien que si on ne passe pas -stdÉ9 (ou gnu99), il y a des choses qui ne marchent pas.
Tiens, je viens de me rendre compte d'une différence entre C90 et C99 plus ou moins en rapport avec le problème initial : en C90, lorsqu'un des opérandes a ou b est négatif, le signe du reste a%b est défini par l'implémentation. En C99 ce n'est plus le cas.
Oui, je croyais l'avoir (en fait, c'est C99). Depuis, j'ai (tenté) d'effacer mon message ... C'est pas facile sur Usenet...
Richard Delorme
Le 02/11/2009 12:01, -ed- a écrit :
On 1 nov, 18:23, Éric Lévénez wrote:
Oui, c'est correct en C99, mais pas en C90
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou
C99 n'est pas encore aussi déployée que C90.
- Inconnu chez Microsoft
Visual C++ 2010 (actuellement disponible en version béta) en supporte des morceaux comme les macros variadiques, le type long long, les commentaires à la C++. Même si cela reste très incomplet on ne peut pas dire que le C99 soit inconnu de Microsoft. Il semble que la politique de Microsoft soit d'ajouter des bouts de C99 en fonctions de la demande des utilisateurs.À leurs utilisateurs de mieux réclamer, donc.
C90 reste encore la norme de fait.
On est quand même assez limité par cette norme. Rien qu'une fonction comme snprintf apporte une confort sécuritaire non négligeable par rapport à sprintf.
Rien à voir avec un quelconque intégrisme comme j'ai pu le lire plus loin.
Mmmmmm....
-- Richard
Le 02/11/2009 12:01, -ed- a écrit :
On 1 nov, 18:23, Éric Lévénez<use...@levenez.com> wrote:
Oui, c'est correct en C99, mais pas en C90
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles
normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou
C99 n'est pas encore aussi déployée que C90.
- Inconnu chez Microsoft
Visual C++ 2010 (actuellement disponible en version béta) en supporte
des morceaux comme les macros variadiques, le type long long, les
commentaires à la C++. Même si cela reste très incomplet on ne peut pas
dire que le C99 soit inconnu de Microsoft. Il semble que la politique de
Microsoft soit d'ajouter des bouts de C99 en fonctions de la demande des
utilisateurs.À leurs utilisateurs de mieux réclamer, donc.
C90 reste encore la norme de fait.
On est quand même assez limité par cette norme. Rien qu'une fonction
comme snprintf apporte une confort sécuritaire non négligeable par
rapport à sprintf.
Rien à voir avec un quelconque intégrisme comme j'ai pu le lire plus
loin.
C'est amusant (enfin pas vraiment), de toujours rappeler les vieilles normes. Pourquoi donc ne pas rappeler à chaque fois la compatibilité ou
C99 n'est pas encore aussi déployée que C90.
- Inconnu chez Microsoft
Visual C++ 2010 (actuellement disponible en version béta) en supporte des morceaux comme les macros variadiques, le type long long, les commentaires à la C++. Même si cela reste très incomplet on ne peut pas dire que le C99 soit inconnu de Microsoft. Il semble que la politique de Microsoft soit d'ajouter des bouts de C99 en fonctions de la demande des utilisateurs.À leurs utilisateurs de mieux réclamer, donc.
C90 reste encore la norme de fait.
On est quand même assez limité par cette norme. Rien qu'une fonction comme snprintf apporte une confort sécuritaire non négligeable par rapport à sprintf.
Rien à voir avec un quelconque intégrisme comme j'ai pu le lire plus loin.