47 votes

Ordre d'évaluation des indices de tableau (versus l'expression) en C

En regardant ce code :

 static int global_var = 0;

int update_three(int val)
{
    global_var = val;
    return 3;
}

int main()
{
    int arr[5];
    arr[global_var] = update_three(2);
}

Quelle entrée de tableau est mise à jour ? 0 ou 2 ?

Y a-t-il une partie dans la spécification de C qui indique la priorité des opérations dans ce cas particulier ?

1voto

Mickael B. Points 450

J'ai essayé et j'ai mis à jour l'entrée 0.

Cependant selon cette question : le côté droit d'une expression sera-t-il toujours évalué en premier

L'ordre d'évaluation n'est ni spécifié ni séquencé. Je pense donc qu'un code comme celui-ci devrait être évité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X