Сообщение Re[3]: Откуда эта лютая любовь к знаковым целым? от 05.05.2020 11:52
Изменено 05.05.2020 12:07 Евгений Музыченко
Re[3]: Откуда эта лютая любовь к знаковым целым?
Здравствуйте, rg45, Вы писали:
R>операция индексирования применима не только к массивам, но и указателям. Ведь, согласно стандарту, операция индексирования — это просто комбинация опраций сложения указателя и числа с последующим разыменованием. *(p + i), *(i + p), p, i[p] — все это равнозначные выражения и индекс вполне может быть отрицательным.
[i]Индекс массива в C/C++ не может быть отрицательным — это следует из определения массива. То, что подобные операции могут приводить к отрицательным смещениям, ничем не отличается от технической возможности обратиться к элементу с очень большим индексом, чтобы за счет переполнения попасть раньше начала массива. Тут просто нужно различать техническую возможность получить какой-то результат, и смысл применямой операции.
R>операция индексирования применима не только к массивам, но и указателям. Ведь, согласно стандарту, операция индексирования — это просто комбинация опраций сложения указателя и числа с последующим разыменованием. *(p + i), *(i + p), p, i[p] — все это равнозначные выражения и индекс вполне может быть отрицательным.
[i]Индекс массива в C/C++ не может быть отрицательным — это следует из определения массива. То, что подобные операции могут приводить к отрицательным смещениям, ничем не отличается от технической возможности обратиться к элементу с очень большим индексом, чтобы за счет переполнения попасть раньше начала массива. Тут просто нужно различать техническую возможность получить какой-то результат, и смысл применямой операции.
Re[3]: Откуда эта лютая любовь к знаковым целым?
Здравствуйте, rg45, Вы писали:
R>операция индексирования применима не только к массивам, но и указателям. Ведь, согласно стандарту, операция индексирования — это просто комбинация опраций сложения указателя и числа с последующим разыменованием.
Индекс массива в C/C++ не может быть отрицательным — это следует из определения массива. То, что подобные операции могут приводить к отрицательным смещениям, ничем не отличается от технической возможности обратиться к элементу с очень большим индексом, чтобы за счет переполнения попасть раньше начала массива. Тут просто нужно различать техническую возможность получить какой-то результат, и смысл применямой операции.
R>операция индексирования применима не только к массивам, но и указателям. Ведь, согласно стандарту, операция индексирования — это просто комбинация опраций сложения указателя и числа с последующим разыменованием.
*(p + i), *(i + p), p[i], i[p]
— все это равнозначные выражения и индекс вполне может быть отрицательным.Индекс массива в C/C++ не может быть отрицательным — это следует из определения массива. То, что подобные операции могут приводить к отрицательным смещениям, ничем не отличается от технической возможности обратиться к элементу с очень большим индексом, чтобы за счет переполнения попасть раньше начала массива. Тут просто нужно различать техническую возможность получить какой-то результат, и смысл применямой операции.