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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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

Хотя здесь говориться про lvalue и rvalue, но UB уже "серьезно папахивает". ;)
...
Рейтинг: 0 / 0
06.08.2007, 18:15:10
    #34708744
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
что такое UB
...
Рейтинг: 0 / 0
06.08.2007, 18:24:25
    #34708766
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
Tubrikчто такое UB
undefined behavior
...
Рейтинг: 0 / 0
06.08.2007, 18:26:19
    #34708772
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
Хотя, стандарт чаще употребляет "the behavior is unspecified"
...
Рейтинг: 0 / 0
06.08.2007, 18:33:30
    #34708797
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
чет у меня молча компилит
...
Рейтинг: 0 / 0
06.08.2007, 19:00:42
    #34708879
daevaorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
Tubrikчет у меня молча компилит
так и должно быть. с точки зрерия синтаксиса конструкция правльная. но результат подобной операци не определен.
...
Рейтинг: 0 / 0
06.08.2007, 20:29:30
    #34708981
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
Предлагаю открыть на скруле рубрику "Никто не забыт, ничто не забыто" или "Бояны современности..."
...
Рейтинг: 0 / 0
07.08.2007, 09:54:40
    #34709511
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
Tubrikчет у меня молча компилит

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

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

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

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

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

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

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

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

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


Сцылку мона?
...
Рейтинг: 0 / 0
07.08.2007, 11:43:33
    #34710007
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
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
07.08.2007, 11:57:36
    #34710082
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
Gluk (Kazan)

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

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

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

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

Кстати, если в стандарте нет behavior is specified, значит это надо считать behavior is unspecified. Т.е., чтобы доказать, что результат определен, это должно быть каким-то образом описано в стандарте. Может даже составлено из нескольких фактов, а не обязательно напрямую.
...
Рейтинг: 0 / 0
07.08.2007, 12:19:32
    #34710203
daevaorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное отличие с инкрементов в C++ и C#
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
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странное отличие с инкрементов в C++ и C# / 25 сообщений из 49, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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