Disons que j'ai un morceau de code comme ceci:Le calcul dans l'argument std :: min() crée-t-il un surdébit de calcul?
int y = 1;
int z = 1;
int x = std::min(y+1,z);
regardant la documentation de std::min
(here), je me demandais si l'ajout dans le premier argument de la fonction crée une surcharge de calcul, à savoir si y+1
est éventuellement exécuté deux fois.
La raison de ma question est que la documentation montre cela comme une mise en œuvre possible de std::min
:
template<class T>
const T& min(const T& a, const T& b)
{
return (b < a) ? b : a;
}
ne donc que quelqu'un sait, si y+1
est exécuté deux fois?
"La documentation" montre que les deux expressions ne sont évaluées qu'une seule fois. –
* "si y + 1 est éventuellement exécuté deux fois" * .. Comment est-ce possible même si 'min' est une fonction, pas une macro? Il semble que vous posiez cette question parce que vous avez vu * "exécuté deux fois" * en cas de macro, mais sans comprendre la raison * pourquoi * cela se produit. Parce que si vous aviez bien compris, vous n'auriez probablement pas posé cette question. Si c'est le cas, je vous conseille de * comprendre * le macro-cas en premier. – Nawaz
[La liste des livres définitifs C++] (http://stackoverflow.com/a/388282/2069064) – Barry