Que fait le code suivant imprimer à la console?
map<int,int> m;
m[0] = m.size();
printf("%d", m[0]);
Réponses possibles:
- Le comportement du code n'est pas défini car il n'est pas défini quel énoncé
m[0]
oum.size()
est exécuté en premier par le compilateur. Donc, elle peut imprimer1
ainsi que0
. - Il imprime
0
parce que le côté droit de l'opérateur d'affectation est exécuté en premier. -
Il imprime
1
parce que l'operator[]
a la priorité la plus élevée de l'énoncé completm[0] = m.size()
. De ce fait, la séquence d'événements suivante se produit:-
m[0]
crée un nouvel élément dans la carte -
m.size()
est appelée, qui est maintenant en1
-
m[0]
est affectée précédemment retourné (par m.size())1
-
La vraie réponse?, qui est l'inconnu pour moi^^
Merci d'avance pour vos réponses...
Woltan