HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #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..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ай нид хелп 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.