Marc Espie a écrit :C'est qui "les gens" ? en C, ca n'a pas d'importance dans les cas ou ca
Les gens? Beaucoup de monde en réalité. 95% des gens que je croise
utilisent i++ par (mauvaise) habitude. J'ai rien contre si c'est une
habitude assumée comme tel, par contre il faut dire vite que ça n'a pas
d'importance... car c'est fondamentalement faux. Les expressions ++i et
i++ ne sont pas équivalentes.donne le meme resultat, et c'est traditionnel d'ecrire i++.
Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
par contre '++' avant ou après le i donne le même résultat sur la
variable i une fois l'instruction executée: elle a été incrémentée d'une
unité.
Je trouve que considérer que i++ est identique à ++i introduit une
légère confusion dans la tête du programmeur dont certains te
soutiennent après quelque temps de codage "par automatisme, sans
réfléchir" que le ++ peut être mis avant ou après sans que ça change
rien, ce qui est un mauvais réflexe.il n'y a que en C++ qu'on prefere regulierement ++i pour des raisons
d'efficacite pour les classes definies par l'utilisateur.
Pas que C++, en C aussi.Du coup pourquoi ne pas écrire ++t[i]; ++i; en espérant que le
compilo fusionne le t[i] et le ++i qui suit en l'instruction asm la
plus proche de la sémantique de t[i++].
Ca change quoi ? c'est aussi lisible dans les deux cas, de mon point de
vue.
Bah on peut aussi écrire à la pascal/ada et interdire l'usage des
opérateurs à effets de bords '++' et '--' (et les +=, -= et autre <<=
pendant qu'on y est :) ). Chacun fait ce qu'il veut.Apres, si dans tes autres exemples, tu veux montrer que la difference
est subtile entre des constructions tres comprehensibles et des machins
illisibles... ben il suffit de le dire.
Quelqu'un qui sait programmer en C ne doit pas avoir le moindre souci
avec notre t[i++]++ du debut. Faut quand meme pas deconner, c'est les
regles de base du langage. S'il a des problemes avec, il peut
retourner faire du java ou du pascal...
En effet.. Mais perso je considère que quelqu'un qui écrit i++ en lieu
et place de ++i pas par habitude mais en étant persuadé que les deux
expressions sont équivalentes à i+=1 est quelqu'un qui ne connaît pas
assez le C (peut-être code t'il trop par automatisme). Seul ++i est
équivalent à i+=1, lui même équivalent à (i=i+1).
sam (<==Amiga still running :) )
Marc Espie a écrit :
C'est qui "les gens" ? en C, ca n'a pas d'importance dans les cas ou ca
Les gens? Beaucoup de monde en réalité. 95% des gens que je croise
utilisent i++ par (mauvaise) habitude. J'ai rien contre si c'est une
habitude assumée comme tel, par contre il faut dire vite que ça n'a pas
d'importance... car c'est fondamentalement faux. Les expressions ++i et
i++ ne sont pas équivalentes.
donne le meme resultat, et c'est traditionnel d'ecrire i++.
Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
par contre '++' avant ou après le i donne le même résultat sur la
variable i une fois l'instruction executée: elle a été incrémentée d'une
unité.
Je trouve que considérer que i++ est identique à ++i introduit une
légère confusion dans la tête du programmeur dont certains te
soutiennent après quelque temps de codage "par automatisme, sans
réfléchir" que le ++ peut être mis avant ou après sans que ça change
rien, ce qui est un mauvais réflexe.
il n'y a que en C++ qu'on prefere regulierement ++i pour des raisons
d'efficacite pour les classes definies par l'utilisateur.
Pas que C++, en C aussi.
Du coup pourquoi ne pas écrire ++t[i]; ++i; en espérant que le
compilo fusionne le t[i] et le ++i qui suit en l'instruction asm la
plus proche de la sémantique de t[i++].
Ca change quoi ? c'est aussi lisible dans les deux cas, de mon point de
vue.
Bah on peut aussi écrire à la pascal/ada et interdire l'usage des
opérateurs à effets de bords '++' et '--' (et les +=, -= et autre <<=
pendant qu'on y est :) ). Chacun fait ce qu'il veut.
Apres, si dans tes autres exemples, tu veux montrer que la difference
est subtile entre des constructions tres comprehensibles et des machins
illisibles... ben il suffit de le dire.
Quelqu'un qui sait programmer en C ne doit pas avoir le moindre souci
avec notre t[i++]++ du debut. Faut quand meme pas deconner, c'est les
regles de base du langage. S'il a des problemes avec, il peut
retourner faire du java ou du pascal...
En effet.. Mais perso je considère que quelqu'un qui écrit i++ en lieu
et place de ++i pas par habitude mais en étant persuadé que les deux
expressions sont équivalentes à i+=1 est quelqu'un qui ne connaît pas
assez le C (peut-être code t'il trop par automatisme). Seul ++i est
équivalent à i+=1, lui même équivalent à (i=i+1).
sam (<==Amiga still running :) )
Marc Espie a écrit :C'est qui "les gens" ? en C, ca n'a pas d'importance dans les cas ou ca
Les gens? Beaucoup de monde en réalité. 95% des gens que je croise
utilisent i++ par (mauvaise) habitude. J'ai rien contre si c'est une
habitude assumée comme tel, par contre il faut dire vite que ça n'a pas
d'importance... car c'est fondamentalement faux. Les expressions ++i et
i++ ne sont pas équivalentes.donne le meme resultat, et c'est traditionnel d'ecrire i++.
Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
par contre '++' avant ou après le i donne le même résultat sur la
variable i une fois l'instruction executée: elle a été incrémentée d'une
unité.
Je trouve que considérer que i++ est identique à ++i introduit une
légère confusion dans la tête du programmeur dont certains te
soutiennent après quelque temps de codage "par automatisme, sans
réfléchir" que le ++ peut être mis avant ou après sans que ça change
rien, ce qui est un mauvais réflexe.il n'y a que en C++ qu'on prefere regulierement ++i pour des raisons
d'efficacite pour les classes definies par l'utilisateur.
Pas que C++, en C aussi.Du coup pourquoi ne pas écrire ++t[i]; ++i; en espérant que le
compilo fusionne le t[i] et le ++i qui suit en l'instruction asm la
plus proche de la sémantique de t[i++].
Ca change quoi ? c'est aussi lisible dans les deux cas, de mon point de
vue.
Bah on peut aussi écrire à la pascal/ada et interdire l'usage des
opérateurs à effets de bords '++' et '--' (et les +=, -= et autre <<=
pendant qu'on y est :) ). Chacun fait ce qu'il veut.Apres, si dans tes autres exemples, tu veux montrer que la difference
est subtile entre des constructions tres comprehensibles et des machins
illisibles... ben il suffit de le dire.
Quelqu'un qui sait programmer en C ne doit pas avoir le moindre souci
avec notre t[i++]++ du debut. Faut quand meme pas deconner, c'est les
regles de base du langage. S'il a des problemes avec, il peut
retourner faire du java ou du pascal...
En effet.. Mais perso je considère que quelqu'un qui écrit i++ en lieu
et place de ++i pas par habitude mais en étant persuadé que les deux
expressions sont équivalentes à i+=1 est quelqu'un qui ne connaît pas
assez le C (peut-être code t'il trop par automatisme). Seul ++i est
équivalent à i+=1, lui même équivalent à (i=i+1).
sam (<==Amiga still running :) )
In article <4ad3738c$0$3737$,
Samuel Devulder wrote:Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Ce qui est le cas dans l'ecrasante majorite des utilisations
de i++ (a savoir: for (i = 0; i < n; i++) et assimies).
sam (<==Amiga still running :) )
Bah, les miens fonctionnent encore, mais je ne m'en sers plus. Me suis meme
jamais motive pour rajouter un disque et retrouver un systeme pour la tour
1200/060 qu'on m'avait file... ;(
In article <4ad3738c$0$3737$426a34cc@news.free.fr>,
Samuel Devulder <samuel-dot-devulder@geensys.com> wrote:
Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Ce qui est le cas dans l'ecrasante majorite des utilisations
de i++ (a savoir: for (i = 0; i < n; i++) et assimies).
sam (<==Amiga still running :) )
Bah, les miens fonctionnent encore, mais je ne m'en sers plus. Me suis meme
jamais motive pour rajouter un disque et retrouver un systeme pour la tour
1200/060 qu'on m'avait file... ;(
In article <4ad3738c$0$3737$,
Samuel Devulder wrote:Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Ce qui est le cas dans l'ecrasante majorite des utilisations
de i++ (a savoir: for (i = 0; i < n; i++) et assimies).
sam (<==Amiga still running :) )
Bah, les miens fonctionnent encore, mais je ne m'en sers plus. Me suis meme
jamais motive pour rajouter un disque et retrouver un systeme pour la tour
1200/060 qu'on m'avait file... ;(
Samuel Devulder a écrit :Marc Espie a écrit :C'est qui "les gens" ? en C, ca n'a pas d'importance dans les cas ou ca
Les gens? Beaucoup de monde en réalité. 95% des gens que je croise
utilisent i++ par (mauvaise) habitude. J'ai rien contre si c'est une
habitude assumée comme tel, par contre il faut dire vite que ça n'a
pas d'importance... car c'est fondamentalement faux. Les expressions
++i et i++ ne sont pas équivalentes.donne le meme resultat, et c'est traditionnel d'ecrire i++.
Cela dépend du compilo et de ce qu'on appelle "avoir le même
résultat". Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
par contre '++' avant ou après le i donne le même résultat sur la
variable i une fois l'instruction executée: elle a été incrémentée
d'une unité.
Je trouve que considérer que i++ est identique à ++i introduit une
légère confusion dans la tête du programmeur dont certains te
soutiennent après quelque temps de codage "par automatisme, sans
réfléchir" que le ++ peut être mis avant ou après sans que ça change
rien, ce qui est un mauvais réflexe.il n'y a que en C++ qu'on prefere regulierement ++i pour des raisons
d'efficacite pour les classes definies par l'utilisateur.
Pas que C++, en C aussi.Du coup pourquoi ne pas écrire ++t[i]; ++i; en espérant que le
compilo fusionne le t[i] et le ++i qui suit en l'instruction asm la
plus proche de la sémantique de t[i++].
Ca change quoi ? c'est aussi lisible dans les deux cas, de mon point de
vue.
Bah on peut aussi écrire à la pascal/ada et interdire l'usage des
opérateurs à effets de bords '++' et '--' (et les +=, -= et autre <<=
pendant qu'on y est :) ). Chacun fait ce qu'il veut.Apres, si dans tes autres exemples, tu veux montrer que la difference
est subtile entre des constructions tres comprehensibles et des machins
illisibles... ben il suffit de le dire.
Quelqu'un qui sait programmer en C ne doit pas avoir le moindre souci
avec notre t[i++]++ du debut. Faut quand meme pas deconner, c'est les
regles de base du langage. S'il a des problemes avec, il peut
retourner faire du java ou du pascal...
En effet.. Mais perso je considère que quelqu'un qui écrit i++ en lieu
et place de ++i pas par habitude mais en étant persuadé que les deux
expressions sont équivalentes à i+=1 est quelqu'un qui ne connaît pas
assez le C (peut-être code t'il trop par automatisme). Seul ++i est
équivalent à i+=1, lui même équivalent à (i=i+1).
sam (<==Amiga still running :) )
Vous avez entièrement raison sur tous ces points. Les opérateurs ++, --
et dyadiques (+=, etc.) devraient être interdits d'usage, au moins dans
les logiciels où la fiabilité doit être supérieure au niveau nominal (au
sens de COCOMO). C'est d'ailleurs ce que j'ai pratiqué dans plusieurs
projets, en particulier militaires et pour le spatial.
J'ai été responsable du développement d'un compilateur C. Je connaissais
la norme ANSI (la première) quasiment par coeur. Je pensais et je
persiste à penser que des langages de la famille C (incluant C++ et
Java) sont des langages de programmation qui n'auraient jamais dû exister.
C'est une aberration du point de vue de la qualité logicielle et une
honte pour l'industrie informatique !
Il devrait y avoir un comité d'éthique pour l'informatique (un ordre des
informaticiens, comme l'ordre des médecins) pour interdire ce genre
d'horreur.
Samuel Devulder a écrit :
Marc Espie a écrit :
C'est qui "les gens" ? en C, ca n'a pas d'importance dans les cas ou ca
Les gens? Beaucoup de monde en réalité. 95% des gens que je croise
utilisent i++ par (mauvaise) habitude. J'ai rien contre si c'est une
habitude assumée comme tel, par contre il faut dire vite que ça n'a
pas d'importance... car c'est fondamentalement faux. Les expressions
++i et i++ ne sont pas équivalentes.
donne le meme resultat, et c'est traditionnel d'ecrire i++.
Cela dépend du compilo et de ce qu'on appelle "avoir le même
résultat". Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
par contre '++' avant ou après le i donne le même résultat sur la
variable i une fois l'instruction executée: elle a été incrémentée
d'une unité.
Je trouve que considérer que i++ est identique à ++i introduit une
légère confusion dans la tête du programmeur dont certains te
soutiennent après quelque temps de codage "par automatisme, sans
réfléchir" que le ++ peut être mis avant ou après sans que ça change
rien, ce qui est un mauvais réflexe.
il n'y a que en C++ qu'on prefere regulierement ++i pour des raisons
d'efficacite pour les classes definies par l'utilisateur.
Pas que C++, en C aussi.
Du coup pourquoi ne pas écrire ++t[i]; ++i; en espérant que le
compilo fusionne le t[i] et le ++i qui suit en l'instruction asm la
plus proche de la sémantique de t[i++].
Ca change quoi ? c'est aussi lisible dans les deux cas, de mon point de
vue.
Bah on peut aussi écrire à la pascal/ada et interdire l'usage des
opérateurs à effets de bords '++' et '--' (et les +=, -= et autre <<=
pendant qu'on y est :) ). Chacun fait ce qu'il veut.
Apres, si dans tes autres exemples, tu veux montrer que la difference
est subtile entre des constructions tres comprehensibles et des machins
illisibles... ben il suffit de le dire.
Quelqu'un qui sait programmer en C ne doit pas avoir le moindre souci
avec notre t[i++]++ du debut. Faut quand meme pas deconner, c'est les
regles de base du langage. S'il a des problemes avec, il peut
retourner faire du java ou du pascal...
En effet.. Mais perso je considère que quelqu'un qui écrit i++ en lieu
et place de ++i pas par habitude mais en étant persuadé que les deux
expressions sont équivalentes à i+=1 est quelqu'un qui ne connaît pas
assez le C (peut-être code t'il trop par automatisme). Seul ++i est
équivalent à i+=1, lui même équivalent à (i=i+1).
sam (<==Amiga still running :) )
Vous avez entièrement raison sur tous ces points. Les opérateurs ++, --
et dyadiques (+=, etc.) devraient être interdits d'usage, au moins dans
les logiciels où la fiabilité doit être supérieure au niveau nominal (au
sens de COCOMO). C'est d'ailleurs ce que j'ai pratiqué dans plusieurs
projets, en particulier militaires et pour le spatial.
J'ai été responsable du développement d'un compilateur C. Je connaissais
la norme ANSI (la première) quasiment par coeur. Je pensais et je
persiste à penser que des langages de la famille C (incluant C++ et
Java) sont des langages de programmation qui n'auraient jamais dû exister.
C'est une aberration du point de vue de la qualité logicielle et une
honte pour l'industrie informatique !
Il devrait y avoir un comité d'éthique pour l'informatique (un ordre des
informaticiens, comme l'ordre des médecins) pour interdire ce genre
d'horreur.
Samuel Devulder a écrit :Marc Espie a écrit :C'est qui "les gens" ? en C, ca n'a pas d'importance dans les cas ou ca
Les gens? Beaucoup de monde en réalité. 95% des gens que je croise
utilisent i++ par (mauvaise) habitude. J'ai rien contre si c'est une
habitude assumée comme tel, par contre il faut dire vite que ça n'a
pas d'importance... car c'est fondamentalement faux. Les expressions
++i et i++ ne sont pas équivalentes.donne le meme resultat, et c'est traditionnel d'ecrire i++.
Cela dépend du compilo et de ce qu'on appelle "avoir le même
résultat". Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
par contre '++' avant ou après le i donne le même résultat sur la
variable i une fois l'instruction executée: elle a été incrémentée
d'une unité.
Je trouve que considérer que i++ est identique à ++i introduit une
légère confusion dans la tête du programmeur dont certains te
soutiennent après quelque temps de codage "par automatisme, sans
réfléchir" que le ++ peut être mis avant ou après sans que ça change
rien, ce qui est un mauvais réflexe.il n'y a que en C++ qu'on prefere regulierement ++i pour des raisons
d'efficacite pour les classes definies par l'utilisateur.
Pas que C++, en C aussi.Du coup pourquoi ne pas écrire ++t[i]; ++i; en espérant que le
compilo fusionne le t[i] et le ++i qui suit en l'instruction asm la
plus proche de la sémantique de t[i++].
Ca change quoi ? c'est aussi lisible dans les deux cas, de mon point de
vue.
Bah on peut aussi écrire à la pascal/ada et interdire l'usage des
opérateurs à effets de bords '++' et '--' (et les +=, -= et autre <<=
pendant qu'on y est :) ). Chacun fait ce qu'il veut.Apres, si dans tes autres exemples, tu veux montrer que la difference
est subtile entre des constructions tres comprehensibles et des machins
illisibles... ben il suffit de le dire.
Quelqu'un qui sait programmer en C ne doit pas avoir le moindre souci
avec notre t[i++]++ du debut. Faut quand meme pas deconner, c'est les
regles de base du langage. S'il a des problemes avec, il peut
retourner faire du java ou du pascal...
En effet.. Mais perso je considère que quelqu'un qui écrit i++ en lieu
et place de ++i pas par habitude mais en étant persuadé que les deux
expressions sont équivalentes à i+=1 est quelqu'un qui ne connaît pas
assez le C (peut-être code t'il trop par automatisme). Seul ++i est
équivalent à i+=1, lui même équivalent à (i=i+1).
sam (<==Amiga still running :) )
Vous avez entièrement raison sur tous ces points. Les opérateurs ++, --
et dyadiques (+=, etc.) devraient être interdits d'usage, au moins dans
les logiciels où la fiabilité doit être supérieure au niveau nominal (au
sens de COCOMO). C'est d'ailleurs ce que j'ai pratiqué dans plusieurs
projets, en particulier militaires et pour le spatial.
J'ai été responsable du développement d'un compilateur C. Je connaissais
la norme ANSI (la première) quasiment par coeur. Je pensais et je
persiste à penser que des langages de la famille C (incluant C++ et
Java) sont des langages de programmation qui n'auraient jamais dû exister.
C'est une aberration du point de vue de la qualité logicielle et une
honte pour l'industrie informatique !
Il devrait y avoir un comité d'éthique pour l'informatique (un ordre des
informaticiens, comme l'ordre des médecins) pour interdire ce genre
d'horreur.
Bonsoir,
Quand on vous lit vos discutions, on a moins honte d'être débutant!
Merci
Bonsoir,
Quand on vous lit vos discutions, on a moins honte d'être débutant!
Merci
Bonsoir,
Quand on vous lit vos discutions, on a moins honte d'être débutant!
Merci
Marc Espie a écrit :In article <4ad3738c$0$3737$,
Samuel Devulder wrote:Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Pourtant j et k n'ont pas la même valeur, preuve que ++i et i++ n'ont
pas le même comportement *observable*.
Oui, c'est le cas uniquement si on utilise pas la valeur retournée par
i++ (i.e. quand on l'utilise comme une instruction).
Marc Espie a écrit :
In article <4ad3738c$0$3737$426a34cc@news.free.fr>,
Samuel Devulder <samuel-dot-devulder@geensys.com> wrote:
Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Pourtant j et k n'ont pas la même valeur, preuve que ++i et i++ n'ont
pas le même comportement *observable*.
Oui, c'est le cas uniquement si on utilise pas la valeur retournée par
i++ (i.e. quand on l'utilise comme une instruction).
Marc Espie a écrit :In article <4ad3738c$0$3737$,
Samuel Devulder wrote:Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Pourtant j et k n'ont pas la même valeur, preuve que ++i et i++ n'ont
pas le même comportement *observable*.
Oui, c'est le cas uniquement si on utilise pas la valeur retournée par
i++ (i.e. quand on l'utilise comme une instruction).
Marc Espie a écrit :In article <4ad3738c$0$3737$,
Samuel Devulder wrote:Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Pourtant j et k n'ont pas la même valeur, preuve que ++i et i++ n'ont
pas le même comportement *observable*.
En fait tout dépend ce qu'on observe. La variable "i" toute seule ou
l'ensemble de l'espace d'état du programme, cad l'ensemble des
variables. En général on observe toutes les variables pour dire que la
sémantique est identique. Comparons le résultat de
Marc Espie a écrit :
In article <4ad3738c$0$3737$426a34cc@news.free.fr>,
Samuel Devulder <samuel-dot-devulder@geensys.com> wrote:
Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Pourtant j et k n'ont pas la même valeur, preuve que ++i et i++ n'ont
pas le même comportement *observable*.
En fait tout dépend ce qu'on observe. La variable "i" toute seule ou
l'ensemble de l'espace d'état du programme, cad l'ensemble des
variables. En général on observe toutes les variables pour dire que la
sémantique est identique. Comparons le résultat de
Marc Espie a écrit :In article <4ad3738c$0$3737$,
Samuel Devulder wrote:Cela dépend du compilo et de ce qu'on appelle "avoir le même résultat".
Pour moi ca ne donne pas le résultat (dans le cas général):
int i = 3;
int j = i++; /* j vaut 3 */
int k = ++i; /* k vaut 5 */
ce que j'appelle avoir le meme resultat, c'est avoir le meme comportement
observable.
Pourtant j et k n'ont pas la même valeur, preuve que ++i et i++ n'ont
pas le même comportement *observable*.
En fait tout dépend ce qu'on observe. La variable "i" toute seule ou
l'ensemble de l'espace d'état du programme, cad l'ensemble des
variables. En général on observe toutes les variables pour dire que la
sémantique est identique. Comparons le résultat de
Mon point etait que, dans un grand nombre de cas, le choix de i++ ou ++i
n'a pas d'importance... dans les autres cas, *bien sur* qu'il a une
importance.
Mon point etait que, dans un grand nombre de cas, le choix de i++ ou ++i
n'a pas d'importance... dans les autres cas, *bien sur* qu'il a une
importance.
Mon point etait que, dans un grand nombre de cas, le choix de i++ ou ++i
n'a pas d'importance... dans les autres cas, *bien sur* qu'il a une
importance.
Stop, je t'arrete tout de suite. J'ai choisi avec soin mon vocabulaire.
"comportement observable", c'est au sens de la norme.
facilement ++i, parce que ca peut changer la vitesse de son code
Apres, on peut arguer, comme le fait Wykaa, du bien fonde des constructions
de type i++ ou ++i.
"programmeurs C" qui ne maitrisent pas ce genre de construction, au besoin
en les envoyant faire des conneries dans des langages dont je me fous, comme
java... ;-)
Stop, je t'arrete tout de suite. J'ai choisi avec soin mon vocabulaire.
"comportement observable", c'est au sens de la norme.
facilement ++i, parce que ca peut changer la vitesse de son code
Apres, on peut arguer, comme le fait Wykaa, du bien fonde des constructions
de type i++ ou ++i.
"programmeurs C" qui ne maitrisent pas ce genre de construction, au besoin
en les envoyant faire des conneries dans des langages dont je me fous, comme
java... ;-)
Stop, je t'arrete tout de suite. J'ai choisi avec soin mon vocabulaire.
"comportement observable", c'est au sens de la norme.
facilement ++i, parce que ca peut changer la vitesse de son code
Apres, on peut arguer, comme le fait Wykaa, du bien fonde des constructions
de type i++ ou ++i.
"programmeurs C" qui ne maitrisent pas ce genre de construction, au besoin
en les envoyant faire des conneries dans des langages dont je me fous, comme
java... ;-)
Marc Espie a écrit :Stop, je t'arrete tout de suite. J'ai choisi avec soin mon vocabulaire.
"comportement observable", c'est au sens de la norme.
Ah okok.. d'accord. Parce que j'avais lu dans ton propos ++i et i++ sont
équivalent sans se préoccuper de quoi que ce soit d'autres. Tu imagines
le débutant qui lit cela? brrrr.
Le programmeur C++ choisira plusfacilement ++i, parce que ca peut changer la vitesse de son code
Je ne vois pas pourquoi du point de vue C++ il y aurait une différence
d'exécution sur les types primitifs. Normalement le compilo C++ devrait
nous sortir la même panoplie d'optimisation et traduire i++ par la même
traduction asm que ++i quand "la valeur retournée importe peu" et
concerne un type primitif.
Je me doutais bien que derrière le choix ++i et i++ tu voyais une espèce
de marque distinctive d'église de codeur. Bon moi je me fiche des
églises, je m'adapte au projet et ses contraintes techniques, c'est la
seule chose qui importe.
Marc Espie a écrit :
Stop, je t'arrete tout de suite. J'ai choisi avec soin mon vocabulaire.
"comportement observable", c'est au sens de la norme.
Ah okok.. d'accord. Parce que j'avais lu dans ton propos ++i et i++ sont
équivalent sans se préoccuper de quoi que ce soit d'autres. Tu imagines
le débutant qui lit cela? brrrr.
Le programmeur C++ choisira plus
facilement ++i, parce que ca peut changer la vitesse de son code
Je ne vois pas pourquoi du point de vue C++ il y aurait une différence
d'exécution sur les types primitifs. Normalement le compilo C++ devrait
nous sortir la même panoplie d'optimisation et traduire i++ par la même
traduction asm que ++i quand "la valeur retournée importe peu" et
concerne un type primitif.
Je me doutais bien que derrière le choix ++i et i++ tu voyais une espèce
de marque distinctive d'église de codeur. Bon moi je me fiche des
églises, je m'adapte au projet et ses contraintes techniques, c'est la
seule chose qui importe.
Marc Espie a écrit :Stop, je t'arrete tout de suite. J'ai choisi avec soin mon vocabulaire.
"comportement observable", c'est au sens de la norme.
Ah okok.. d'accord. Parce que j'avais lu dans ton propos ++i et i++ sont
équivalent sans se préoccuper de quoi que ce soit d'autres. Tu imagines
le débutant qui lit cela? brrrr.
Le programmeur C++ choisira plusfacilement ++i, parce que ca peut changer la vitesse de son code
Je ne vois pas pourquoi du point de vue C++ il y aurait une différence
d'exécution sur les types primitifs. Normalement le compilo C++ devrait
nous sortir la même panoplie d'optimisation et traduire i++ par la même
traduction asm que ++i quand "la valeur retournée importe peu" et
concerne un type primitif.
Je me doutais bien que derrière le choix ++i et i++ tu voyais une espèce
de marque distinctive d'église de codeur. Bon moi je me fiche des
églises, je m'adapte au projet et ses contraintes techniques, c'est la
seule chose qui importe.
Le /grand nombre de cas/ c'est quand i++ ou ++i (remplacer i pas /lvalue
modifiable/ ce sera plus général) est une /void expression/.
Le /grand nombre de cas/ c'est quand i++ ou ++i (remplacer i pas /lvalue
modifiable/ ce sera plus général) est une /void expression/.
Le /grand nombre de cas/ c'est quand i++ ou ++i (remplacer i pas /lvalue
modifiable/ ce sera plus général) est une /void expression/.