Je sais que C++ ne spécifie pas l'ordre dans lequel les paramètres sont transmis à une fonction. Mais si nous écrivons le code suivant:convention d'appel et ordre d'évaluation
void __cdecl func(int a, int b, int c)
{
printf("%d,%d,%d", a,b,c);
}
int main()
{
int i=10;
func(++i, i, ++i);
}
Peut-on dire de manière fiable la sortie serait 12,11,11
depuis le __cdecl veille à ce que l'ordre de passage argument est droite à gauche?
Puisque je n'écrirais jamais de code comme celui-ci, je suis curieux de savoir ce qui a provoqué cette question. Quelle est la contrainte? –
http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points –
En outre, vous n'avez pas lu le million et un article sur ne pas modifier une variable plus d'une fois dans une instruction. –