Partager via


Avertissement C26452

Dépassement arithmétique : le nombre de décalages gauches est négatif ou supérieur ou égal à la taille de l’opérande, qui est un comportement non défini (io.3)

Notes

Cet avertissement indique que le nombre de décalages est négatif, ou supérieur ou égal au nombre de bits dans l’opérande décalé. L’un ou l’autre cas entraîne un comportement non défini.

Avertissement C4293 est une vérification similaire dans le compilateur Microsoft C++.

Nom de l’analyse du code : SHIFT_COUNT_NEGATIVE_OR_TOO_BIG

Exemple

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (hi << 32) | lo; // C26252 here
}

Pour corriger cet avertissement, utilisez le code suivant :

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}

Voir aussi

C26450
C26451
C26453
C26454
ES.101 : Utiliser des types non signés pour la manipulation de bits
ES.102 : Utiliser des types signés pour l’arithmétique