Показать сообщение отдельно

  #12  
Старый 17.05.2010, 13:53
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Цитата:
sizeof(arr)/sizeof(arr[0]) вернет 32 значащих бита рассмариваемых
как беззнаковое число но у Вас в len может оказатся
отрицательное число после присваивания (если 31 бит включен
будет он рассматривается как знак в len) так как у Вас len знаковая
переменная то это условие i < len никогда не выполнится
Я так понимаю, что такое может произойти, если в массиве будет очень много элементов только, больше 2147483647.
Цитата:
sizeof(arr)/sizeof(arr[0]) это выражение после вычисления
на x64 имеет размер 64 значащих бита потом
в результате присваивания
len = sizeof(arr)/sizeof(arr[0])
обрезаются старшие 32 бита результат будет неверный в len
А это - когда еще больше.

Эта ситуация в рамках данной задачи нереальна по-моему. Если бы здесь была возможна такая ситуация, я бы использовал unsigned int.