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

  #11  
Старый 17.05.2010, 12:54
greki_hoy
Познающий
Регистрация: 04.03.2010
Сообщений: 32
Провел на форуме:
32525

Репутация: 23
По умолчанию

2 d_x

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

Последний раз редактировалось greki_hoy; 17.05.2010 в 13:00..