En gros la question etait que fait ce bout de code :
[CODE] #include <stdio.h>
int main(int argc, char* argv[])
{
int C = 0;
if( C>C++ )
printf(“C > C++\n”) ;
return 0;
}
[/CODE]
Et je voullais faire le malin en montrer que gcc aller afficher le string mais en faites gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00) ne fait rien.
Je suis assez decu.
Est ce que quelqu’un sait pourquoi gcc aurait changer de strategie?
Je connaissais pas cette problématique, j’avoue que ça m’étonne. J’ai « toujours » (j’ai pas tant d’xp de ça non plus) appris que
c > c++ équivalait à c>c, puis c = c+1 et que c > ++c faisait les 2 instructions dans l’ordre inverse.
On avait même eu un cours là dessus à l’iut, on utilisait gcc (je sais pas quelle version, c’était en 2007) et à chaque fois il faisait bien l’incrément avant avec ++c, et après avec c++.
Enjoy. (Et le fait que ca soit pas defini n’empeche pas les mecs qui font les compilos de faire des trucs logiques et les mecs qui codent d’eviter ces pitfalls hein)