Avatar ·

Comment détecter un dépassement de capacité des entiers non signés en C++ ?

Bonjour à tous ! Je suis un développeur C++ débutant et j'ai rencontré un problème de dépassement de capacité des entiers non signés. J'écris un programme pour traiter des données de capteurs, où les valeurs peuvent être grandes. J'utilise `unsigned int` pour stocker des compteurs, mais j'ai remarqué que parfois le programme se comporte étrangement. Voici un exemple de code qui me trouble : ```cpp #include int main() { unsigned int a = 4294967295; // valeur maximale pour unsigned int unsigned int b = 1; unsigned int result = a + b; std::cout << "a + b = " << result << std::endl; // Affiche 0, mais je m'attendais à une erreur return 0; } ``` Je sais qu'en C++, le dépassement de capacité des entiers signés est un comportement indéfini (UB). Mais qu'en est-il des entiers non signés ? La norme dit que le dépassement des `unsigned` "s'enroule" modulo 2^N. Mais comment puis-je savoir programmatiquement qu'un dépassement a eu lieu ? Dans mon projet réel, c'est critique — si le compteur déborde, les données deviennent incorrectes, et cela peut entraîner une