powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странное отличие с инкрементов в C++ и C#
25 сообщений из 49, страница 1 из 2
Странное отличие с инкрементов в C++ и C#
    #34708172
egghead
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите почему данные конструкции
Код: plaintext
1.
2.
int i =  5 ;
int j = ++i + ++i;

в ++ и # работают по разному?
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708185
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дубль 3 за последний год.
Смотреть поиск.
Дополнительно, задасться вопросом, почему на разных компиляторах С++ разный результат.
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708269
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhДополнительно, задасться вопросом, почему на разных компиляторах С++ разный результат.

С этого места пападробней :)

Пример, если не затруднит
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708341
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egghead wrote:

> в ++ и # работают по разному?
Это уже обсуждалось.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708358
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egghead пишет:
> int i = *5*;
> int j = ++i + ++i;
>
>
> в ++ и # работают по разному?

В С++ это никак не работает, потому что UB. Если в C# его четко
определили, то оно - да - работает по-другому. Если нет, то как
хочет, так и работает.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708439
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) AkhДополнительно, задасться вопросом, почему на разных компиляторах С++ разный результат.

С этого места пападробней :)

Пример, если не затруднит

мне тож интересно
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708448
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
В С++ это никак не работает, потому что UB.

Или тынц в штандарт по поводу UB

P.S. Народу не нужны НЕЗДОРОВЫЕ сенсации (с)
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708535
Тынц.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обсуждали и не раз.

/topic/291318
/topic/308616
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708707
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
С этого места пападробней :)

Пример, если не затруднит

При обсуждении последней волны, вроде, затронули компиляторы.

Надо будет поднимать топики.
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708727
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) MasterZiv
В С++ это никак не работает, потому что UB.

Или тынц в штандарт по поводу UB

P.S. Народу не нужны НЕЗДОРОВЫЕ сенсации (с)


Что-то похожее - 5.4
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708737
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Gluk (Kazan) MasterZiv
В С++ это никак не работает, потому что UB.

Или тынц в штандарт по поводу UB

P.S. Народу не нужны НЕЗДОРОВЫЕ сенсации (с)


Что-то похожее - 5.4

В смысле 5.0.4. Т.е. Expressions, А не Expressions -Explicit type conversion.

Хотя здесь говориться про lvalue и rvalue, но UB уже "серьезно папахивает". ;)
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708744
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такое UB
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708766
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikчто такое UB
undefined behavior
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708772
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, стандарт чаще употребляет "the behavior is unspecified"
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708797
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чет у меня молча компилит
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708879
daevaorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tubrikчет у меня молча компилит
так и должно быть. с точки зрерия синтаксиса конструкция правльная. но результат подобной операци не определен.
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34708981
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю открыть на скруле рубрику "Никто не забыт, ничто не забыто" или "Бояны современности..."
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34709511
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikчет у меня молча компилит

VS, билдер и все прочие компилят молча свои не стандартные вещи. Так почему они должны кричать об UB? Вполне возможно, для для определенных компиляторов результат определен, и они предпологают, что ты знаешь о том, что произойдет.

А, возможно, компилятор еще "не дорос". ;)
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34709514
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПредлагаю открыть на скруле рубрику "Никто не забыт, ничто не забыто" или "Бояны современности..."

Точно, уже коллекцию можно составлять. ;)
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34709987
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh пишет:
> VS, билдер и все прочие компилят молча свои не стандартные вещи. Так
> почему они должны кричать об UB?

Нет, все компиляторы С и С++ должны UB компилировать молча согласно стандарту.
Это - не прихоть производителя.

Вполне возможно, для для определенных
> компиляторов результат определен, и они предпологают, что ты знаешь о
> том, что произойдет.

Ни для какого компилятора результат не определен. Опять же, согласно
стандарту. А раз результат не определен, то производители имеют право
применять нестабильные алгоритмы для генерации кода (т.е. такие,
которые могут приводить к разным (непредсказуемым) результатам в
смысле порядка вычислений подвыражений).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34709997
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Вполне возможно, для для определенных
> компиляторов результат определен, и они предпологают, что ты знаешь о
> том, что произойдет.

Ни для какого компилятора результат не определен. Опять же, согласно
стандарту. А раз результат не определен, то производители имеют право
применять нестабильные алгоритмы для генерации кода (т.е. такие,
которые могут приводить к разным (непредсказуемым) результатам в
смысле порядка вычислений подвыражений).
Posted via ActualForum NNTP Server 1.4

А имют право применить стабильный алгоритм и опубликовать его результаты.
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34710005
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Akh пишет:
> VS, билдер и все прочие компилят молча свои не стандартные вещи. Так
> почему они должны кричать об UB?

Нет, все компиляторы С и С++ должны UB компилировать молча согласно стандарту.
Это - не прихоть производителя.


Сцылку мона?
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34710007
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Akh Gluk (Kazan) MasterZiv
В С++ это никак не работает, потому что UB.

Или тынц в штандарт по поводу UB

P.S. Народу не нужны НЕЗДОРОВЫЕ сенсации (с)


Что-то похожее - 5.4

В смысле 5.0.4. Т.е. Expressions, А не Expressions -Explicit type conversion.

Хотя здесь говориться про lvalue и rvalue, но UB уже "серьезно папахивает". ;)

5.0.4 не нашел в ISO/IEC 9899:1999
Вас не затруднит процитировать ?

Интересует именно объявлена ли такая конструкция как UB или вычисляется по стандарту именно таким образом (например в целях обратной совместимости).

примеры типа i = i++ или i = ++i + 1 не канают, так как немножко про другое
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34710082
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)

5.0.4 не нашел в ISO/IEC 9899:1999
Вас не затруднит процитировать ?

Интересует именно объявлена ли такая конструкция как UB или вычисляется по стандарту именно таким образом (например в целях обратной совместимости).

примеры типа i = i++ или i = ++i + 1 не канают, так как немножко про другое

Я про эти же примеры. Я к тому же сказал, что они "папахивают" нашим примером.
Нужные не нашел, поэтому привел похожие.

Кстати, если в стандарте нет behavior is specified, значит это надо считать behavior is unspecified. Т.е., чтобы доказать, что результат определен, это должно быть каким-то образом описано в стандарте. Может даже составлено из нескольких фактов, а не обязательно напрямую.
...
Рейтинг: 0 / 0
Странное отличие с инкрементов в C++ и C#
    #34710203
daevaorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)
примеры типа i = i++ или i = ++i + 1 не канают, так как немножко про другое
как раз про это.Except where noted, the order of evaluation of operands of individual operators and subexpressions of individual expressions, and the order in which side effects take place, is unspecified.*

[Footnote: The precedence of operators is not directly specified, but it can be derived from the syntax. --- end foonote]

Between the previous and next sequence point a scalar object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be accessed only to determine the value to be stored. The requirements of this paragraph shall be met for each allowable ordering of the subexpressions of a full expression; otherwise the behavior is undefined.
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странное отличие с инкрементов в C++ и C#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]