Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Эксперт С++
5025 / 2604 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
1

It is alive!

15.05.2010, 12:50. Показов 4380. Ответов 42
Метки нет (Все метки)

Как?! Как это может быть?!
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main ()
{
   int i = 4;
   char c = i["1q96g"];
   std::cout << c << std::endl;
}
Я понял как это функционирует: от значения переменной i зависит какой собственно символ выберется из строки. Но я совершенно не понимаю КАК это работает!?
10
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2010, 12:50
Ответы с готовыми решениями:

keep-alive в Qt
Нарыл код простейшего однопоточного http-сервера. main: #include &lt;QCoreApplication&gt; #include...

Stayin’ Alive
Долго думала, куда написать: в форум о здоровье или в форум о музыке... Решила всё-таки в здоровье...

HttpClient не работает Keep-Alive
Всем привет. Для запросов использую следующий метод: using (var client = new...

HTTP GET-запрос и keep-alive
Есть HTTP keep-alive соединение. Через него надо сделать серию GET-запросов. Со стороны клиента это...

42
В астрале
Эксперт С++
8032 / 4789 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
19.08.2010, 22:57 41
Из разряда трындеца. Много букв, но интересно. Особенно интересно это запустить

Analogliterals
0
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 441
19.08.2010, 23:40 42
Вот что думает по этому поводу справочник по C:

Из справочника по C
Индексное выражение задает элемент массива и имеет вид:

выражение-1 [ выражение-2 ]

Тип индексного выражения является типом элементов массива, а значение представляет величину, адрес которой вычисляется с помощью значений выражение-1 и выражение-2.

Обычно выражение-1 - это указатель, например, идентификатор массива, а выражение-2 - это целая величина. Однако требуется только, чтобы одно из выражений было указателем, а второе целочисленной величиной. Поэтому выражение-1 может быть целочисленной величиной, а выражение-2 указателем. В любом случае выражение-2 должно быть заключено в квадратные скобки. Хотя индексное выражение обычно используется для ссылок на элементы массива, тем не менее индекс может появляться с любым указателем.

Индексные выражения для ссылки на элементы одномерного массива вычисляются путем сложения целой величины со значениями указателя с последующим применением к результату операции разадресации (*).

Так как одно из выражений, указанных в индексном выражении, является указателем, то при сложении используются правила адресной арифметики, согласно которым целая величина преобразуется к адресному представлению, путем умножения ее на размер типа, адресуемого указателем. Пусть, например, идентификатор arr объявлен как массив элементов типа double.

double arr[10];

Таким образом, чтобы получить доступ к i-тому элементу массива arr можно написать аrr[i], что, в силу сказанного выше, эквивалентно i[a]. При этом величина i умножается на размер типа double и представляет собой адрес i-го элемента массива arr от его начала. Затем это значение складывается со значением указателя arr, что в свою очередь дает адрес i-го элемента массива. К полученному адресу применяется операция разадресации, т.е. осуществляется выборка элемента массива arr по сформированному адресу.

Таким образом, результатом индексного выражения arr[i] (или i[arr]) является значение i-го элемента массива.



Кстати в книгах по assembler'у на эту тему я тоже что то читал там(в Assembler'e) выражение:
mov ax, bx[5]
эквивалентно:
mov ax, bx + 5

только какоето меньше весит другое быстрее выполняется!
1
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 1
09.11.2014, 05:09 43
работает в силу коммутативности:
A[i] это *(A+i), учитывая что от перемены мест слагаемых сумма не изменяется, то это будет *(i+A), что в свою очередь тождественно в наешм случае i[A]
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2014, 05:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Keep-Alive соединение и Cookie
Доброго времени суток, товарищи программисты. Столкнулся с такой вот ситуацией: При попытке...

wiznet vs keep alive, как это работает???
Здравствуйте, заранее извиняюсь если тема не в той ветке или уже обсуждалась. ( но я никак не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.