Как стать автором
Обновить
207
0
Victoria Zhislina @vikky13

HUAWEI

Отправить сообщение
Спасибо! Про нее почему-то не подумала. Разрыв шаблона :) Надо будет как-нибудь ее тоже добавить к сравнению.
Хороший вопрос, простой ответ — значит, кроме считывания (и записи, которая также входит в тест) происходит что-то еще. Что именно — в данном случае неважно. Предпоследний абзац исходного текста, однако. Другие платформы — любопытно, да. Но мы сравниваем с WIC, которого там (пока) нет
Это удивительно, но от вашего комментария есть польза. Я увидела, что забыла упомянуть в тексте, что Tiff по условиям-не сжатый. Спасибо!
Да, я ждала, что в комментариях еще библиотек напредлагают. Может, кто-нибудь когда-нибудь за это и возьмется. Задача — очень несложная, студенческая :). Плюс интересно не только и не сколько загрузка-сохранение, но и фильтрация, конвертация цвета и другие операции (хотя там наверняка победит Intel IPP)
В нашем наборе для тестирования было все (даже мышь и портативная клавиатура), но вот ценника не было.
На самом деле, спорить тут бесполезно — это вопрос из серии «Является ли фраза „варкалось, хливкие шорьки пырялись по мове“ написанной на русском языке или нет?» Но даже в вашей трактовке — код с UB -именно часть стандарта, так как он там есть. Т.е. в стандарте С нет ничего про нарисованные смайлики или ключевое слово class тк это — не часть языка С. А вот про выход за границу массива есть — именно что в этом случае поведение неопределено, т.е. это — часть языка.
честно проверять все элементы массива и дальше — или встречу динозавра или нет :)
Если индекс не выйдет за границы, то из этого совсем не следует, что значение найдется.
Если этот код компилируется соответствующим компилятором, то это — код на С. Иначе бы выдавалась ошибка компиляции.
Самое интересное из всех наблюдений. Спасибо! видимо, логика компилятора тут будет «раз вы сами так наплевательски к оптимизации относитесь, то и я вам ничего оптимизировать не буду» :)
Говоря про мой случай, я имею в виду не конкретный компилятор и систему, а то, что у меня подряд 2 массива из 4 int каждый. В таких условиях я не могу представить ни одной ситуации, когда компилятору зачем-либо понадобится вставить между ними что-либо. Перед первым — да, между — нет. Если вы сможете ее придумать, буду благодарна.
Но, считайте, что вы меня убедили и надо для полноты картины в начале вставить прагму компилятора, прямо запрещающую padding.
В моей структуре между двумя массивами без специальных ухищрений (=ключей компилятора) — не может. Это легко проверяемо. А в общем случае — да, бывает padding. Но мы его не рассматриваем.
Это — не особенность реализации, это — ваша особенность :) В смысле — у вас какие-то особенные структуры или особенный С. Цитата из стандарта «A structure type describes a sequentially allocated nonempty set of member objects
(and, in certain circumstances, an incomplete array), each of which has an optionally
specified name and possibly distinct type.»
Тут есть еще интересный момент. Компилятору в случае E1[E2] проверить выход за границу массива и, при желании, оптимизировать, элементарно. А вот как понять, что за границу массива вышел указатель? Компилятор единственное, что может сделать — разыменовать его и или дать элемент оттуда или, если это недоступная область памяти, выдать исключение (ошибку). Тем более, если я не как в примере возьму само имя массива в качестве указателя, а просто возьму «левый» указатель и присвою ему адрес начала массива. То есть, на практике UB в этом случае не будет никогда — только в теории. А для массивов — как видите, есть и в реальности
У меня — еще более ранняя редакция. Посмотрела вашу редакцию стандарта — там тоже это есть 6.5.2.1 Array subscripting
Constraints
1 One of the expressions shall have type ‘‘pointer to complete object type’’, the other
expression shall have integer type, and the result has type ‘‘type’’.
Semantics
2 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, a pointer 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).
Но вместе с параграфом, который вы изначально цитируете, да — и массивы и указатели — оба случая UB
например, для ускоренного кодирования\декодирования видео. IntelHD это умеет делать быстрее + освобождать Vega для других задач.
Я бы посоветовала сначала еще раз прочесть первую часть этой статьи :) там явно объясняется, что веток вообще не существует :)
Про родительский коммит вы правы безусловно, но, просто это в данном случае несущественно для текста.Про восстановление из reflog написано на том самом рисунке :)
нет, не пропущена. Так в оригинале. HEAD же отбрасывается, поэтому не нужна ему стрелка :)

Информация

В рейтинге
Не участвует
Зарегистрирована
Активность