Ça compile, parce que c'est une fonction sans prototype dont type ne sont pas testé à la compilation.
Donc bar met des int sur la stack (ou dans les registre) et foo les interprette comme des double et donc ça donne n'importe quoi comme résultat.
Le code en C++ interdit la syntaxe K&R, donc tu ne peux pas écrire la même chose en C++.
C++ ne compilera pas ce code car on ne peux pas caster implicitment par void* en C++. Alors qu'on fait tout le temps ça en C.
Et d'après toi, qu'est-ce que ce programme affiche ? Tu penses 45 peut être, puisque a et b pointent vers le même entiers. Mais pourtant gcc -O2 m'affiche 108. (Voilà ce qui arrive quand on fait de l'alias de type)
[^] # Re: ==
Posté par Gof (site web personnel) . En réponse au journal OSv : l'OS pour les nuages. Évalué à 3.
Ça compile, parce que c'est une fonction sans prototype dont type ne sont pas testé à la compilation.
Donc
barmet des int sur la stack (ou dans les registre) etfooles interprette comme des double et donc ça donne n'importe quoi comme résultat.Le code en C++ interdit la syntaxe K&R, donc tu ne peux pas écrire la même chose en C++.
Autre exemple:
C++ ne compilera pas ce code car on ne peux pas caster implicitment par
void*en C++. Alors qu'on fait tout le temps ça en C.Et d'après toi, qu'est-ce que ce programme affiche ? Tu penses 45 peut être, puisque a et b pointent vers le même entiers. Mais pourtant gcc -O2 m'affiche 108. (Voilà ce qui arrive quand on fait de l'alias de type)