Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оператор [] 
V
    Опции темы
Luckjanov
Дата 18.11.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.7.2009

Репутация: нет
Всего: нет



Привет! Анализировал программу из IOCCC. Упростил до такого кода:
Код

main()
{
    int i;
    char v[] = "Hello, world!\n";
    for(
        i = 0; 
        i["]<i;++i){--i;}"];
        write(1 , (i++) + v , 1)
        );
}

Не могу разобраться со строчкой 
Код
i["]<i;++i){--i;}"];

Что она означает? Как мне кажется 
Код
"]<i;++i){--i;}"
 возвращает адрес, но что дальше непонятно.
PM MAIL ICQ   Вверх
bsa
Дата 18.11.2009, 14:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Убить надо того, кто это писал.
i["]<i;++i){--i;}"];  это тоже самое, что "]<i;++i){--i;}"[i] или, в контексте программы: v[i]
Т.е. эта сложная комбинация используется только для того, чтобы определить конец строки v. Нужна исключительно для запутывания.
PM   Вверх
Luckjanov
Дата 18.11.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.7.2009

Репутация: нет
Всего: нет



Благодарю. Осталось понять, почему "]<i;++i){--i;}"[i]; тоже самое, что и v[i];?
PM MAIL ICQ   Вверх
andrew_121
Дата 18.11.2009, 16:25 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Обфускация рулит!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 18.11.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Luckjanov @ 18.11.2009,  16:08)
Благодарю. Осталось понять, почему "]<i;++i){--i;}"[i]; тоже самое, что и v[i];?

посчитай количество символов в этой строке и в выводимой на экран.  smile 
Кстати, научись читать то что написано, а не первое и последнее слово.

Это сообщение отредактировал(а) bsa - 18.11.2009, 16:38
PM   Вверх
ller
Дата 19.11.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



Мне немного непонятно, почему i["Some string"] то же самое что и "Some string"[i]?
PM MAIL   Вверх
xvr
Дата 19.11.2009, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(ller @ 19.11.2009,  22:12)
Мне немного непонятно, почему i["Some string"] то же самое что и "Some string"[i]?

Потому что сложение - коммутативная операция:
Код

a[b] <=> *(a+b) <=> *(b+a) <=> b[a]

PM MAIL   Вверх
ller
Дата 20.11.2009, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



xvr, А где тут сложение? [] это же оператор доступа к массиву....
И потом там i имеет тип int...

Добавлено @ 00:49
А все. дошло...

Это сообщение отредактировал(а) ller - 20.11.2009, 00:50
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1098 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.