36Fermer38
GodzilLe 07/08/2007 à 16:56
spectras (./35) :
C'est quand même dommage que ce soit à toi Godzil, qu'il faille rappeler qu'on ne prouve pas un "pour tout" par des exemples.
squalyl (./31) :
je savais pas qu'il existait des codes syntaxiquement ET sémantiquement corrects mais invalides. Pourquoi le compilateur ne geule pas? Godzil, t'as testé ce qu'il dit gcc, avec -W -Wall ?
Parce que le compilateur a le droit de faire strictement ce qu'il veut lorsqu'il croise ce genre de code invalide. S'il a envie de le compiler en system("rm -rf /"), il en a tout à fait le droit. Du coup, la détection de ce genre d'erreurs étant difficile et pas toujours souhaitable selon le contexte, il ne le fait pas.

Je n'ai jamais dit que le code etait valide d'un point de vu comprehension, mais juste qu'il est compilable et qu'il donne un resultat, qui en plus semble identique entre different compilo/mode de compilation.

Apres il tombe sous le sens que "(x++)+(x++)" n'a que peut de sens, car difficilement explicatif, et que dans ce cas si on veux faire

x1 = x++
x2 = x++
z = x1 + x2

il vaux mieux le faire tel que, je n'ai jamais dit le contraire.

Et le jour ou tu me trouve un compilo qui te faire un "system("rm -rf /")" quand il tombe sur une construction valide, meme si elle est douteuse, tu m'appelle ok ?

Et vu le cas qu'on a sous les yeux la, je doute que tu puisse meme obtenir un plantage quoi qu'il en soit. Apres avec d'autre comportement indéfini peut etre, dans le cas présent non.