ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 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..
 
Ответить с цитированием
 



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ай нид хелп A_n_d_r_e_i Болталка 3 25.02.2010 11:45
Нид хелп ~Dala$$~ PHP 11 28.01.2007 21:04
Ай нид хелп! Grinder Болталка 12 22.06.2006 05:51



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.