Почему это неопределенное поведение?
Мой ответэтот вопрос была эта функция:
inline bool divisible15(unsigned int x)
{
//286331153 = (2^32 - 1) / 15
//4008636143 = (2^32) - 286331153
return x * 4008636143 <= 286331153;
}
Он отлично работал на моей машине с компилятором VS2008, однакоВот это не работает вообще.
У кого-нибудь есть идея, почему я получаю разные результаты на разных компиляторах?unsigned
переполнение не является неопределенным поведением.
Важная заметка: после некоторого теста было подтверждено, что это быстрее, чем брать остаток от деления на 15. (Однако не на всех компиляторах)