Непонятный цикл

147
09 апреля 2019, 22:10

Недавно увидел на ревью такой цикл:

for (std::size_t i = 0; i < sockets_number; ++i) {
   i[sockets].connect(endpoint);
}

sockets - это массив вида Socket sockets[sockets_number]. Объясните, как это работает? Вроде бы должно быть sockets[i].connect(endpoint) или я отстал от жизни?

Answer 1

К массиву можно обращаться посредством, например: 5[arr], это эквивалентно arr[5]. Вот ещё примеры:

(1 + 3)[a] – то же, что и a[1 + 3]

(a + 1)[2] – то же, что и a[3]

Answer 2
arr[idx] ~ *(arr + idx) <-> *(idx + arr) ~ idx[arr]

Стандарт C: 6.5.2.1 Array subscripting

A postfix expression followed by an expression in square brackets [] is a subscripted designation of an element of an array object. The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))). Because of the conversion rules that apply to the binary + operator, if E1 is an array object (equivalently,apointer to the initial element of an array object) and E2 is an integer, E1[E2] designates the E2-th element of E1 (counting from zero).

READ ALSO
Проблема с websocket Tomcat 9. Требуется помощь

Проблема с websocket Tomcat 9. Требуется помощь

Я пытаюсь написать свой первое клиент-серверное приложение, используя websocket и Tomcat 9 серверЭтот пример я нашел в интернете

156
Обрезать не помещающийся текст в &ldquo;com.lowagie.text.pdf.PdfPCell&rdquo;

Обрезать не помещающийся текст в “com.lowagie.text.pdf.PdfPCell”

Делал проставление печати в pdf-файле и столкнулся с проблемой, что если добавить в ячейку текст, который явно не помещается в своей строке,...

191
Картинки из галереи в GridView Android Studio

Картинки из галереи в GridView Android Studio

Есть такая вот штука

170