Непонятный синтаксис в выражении С++

программирование С++

#include "iostream"
using namespace std;
int main()
{
int * ptr,**ztr;
int ar[6] ={1,2,3,4,5,6};
ptr = ar;
ptr+=2;
ztr =&ptr;
2[ptr] =777 - ptr[-1]; //эта сторока
ptr[ptr[1]-3] = 99;
(*(*ztr)) = *ptr + 23 - ptr[2];

for(int i = 0;i<6;i++)
cout<< ar[i] << " ";
return 0;
}
Как понять 2[ptr] ?????

Примечание:
Да,нормально компилится.Это нам дали тесты.Сам не пойму,что это такое.

Примечание:
ub
Ты прав,выполняется условие
if(2[ptr]==ptr[2])
cout<<2[ptr]<<endl;
Всем,спасибо!А то я думал,что что-то пропустил или забыл.
Ответы:
ну как бы высчитывается индекс по формуле:
значение 2го элемента массива (у нас же тип int) _минус_ 3
Вот и все... хотя запись действительно извращенская :)
А, извини, не на ту строку посмотрел.
Может опечатка? Вы компилировать пробовали? Впервые вижу такую хрень :)
И правда непонятно...
Может быть ptr[2] = ... ? :))
Нашел в сети стандарт C++ (черновая версия, но навряд ли что-то сильно изменилось в этом конкретном параграфе).
Вот что говорится об индексации:
 5.2.1   Subscripting                                                                                         [expr.sub]
1 A postfix expression followed by an expression in square brackets is a postfix expression. One of the expressions
 shall have the type “pointer to T and the other shall have enumeration or integral type. The result is an lvalue of type
 “T.” The type “T” shall be a completely-defined object type.61) The expression E1[E2] is identical (by definition) to
 *((E1)+(E2)) [ Note: see 5.3 and 5.7 for details of * and + and 8.3.4 for details of arrays. — end note ]


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.