|
|
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Подскажите почему данные конструкции Код: plaintext 1. 2. в ++ и # работают по разному? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 15:37 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Дубль 3 за последний год. Смотреть поиск. Дополнительно, задасться вопросом, почему на разных компиляторах С++ разный результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 15:40 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
AkhДополнительно, задасться вопросом, почему на разных компиляторах С++ разный результат. С этого места пападробней :) Пример, если не затруднит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 16:00 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
egghead wrote: > в ++ и # работают по разному? Это уже обсуждалось. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 16:18 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
egghead пишет: > int i = *5*; > int j = ++i + ++i; > > > в ++ и # работают по разному? В С++ это никак не работает, потому что UB. Если в C# его четко определили, то оно - да - работает по-другому. Если нет, то как хочет, так и работает. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 16:22 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) AkhДополнительно, задасться вопросом, почему на разных компиляторах С++ разный результат. С этого места пападробней :) Пример, если не затруднит мне тож интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 16:47 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
MasterZiv В С++ это никак не работает, потому что UB. Или тынц в штандарт по поводу UB P.S. Народу не нужны НЕЗДОРОВЫЕ сенсации (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 16:48 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Обсуждали и не раз. /topic/291318 /topic/308616 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 17:10 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) С этого места пападробней :) Пример, если не затруднит При обсуждении последней волны, вроде, затронули компиляторы. Надо будет поднимать топики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 18:02 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) MasterZiv В С++ это никак не работает, потому что UB. Или тынц в штандарт по поводу UB P.S. Народу не нужны НЕЗДОРОВЫЕ сенсации (с) Что-то похожее - 5.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 18:09 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Akh Gluk (Kazan) MasterZiv В С++ это никак не работает, потому что UB. Или тынц в штандарт по поводу UB P.S. Народу не нужны НЕЗДОРОВЫЕ сенсации (с) Что-то похожее - 5.4 В смысле 5.0.4. Т.е. Expressions, А не Expressions -Explicit type conversion. Хотя здесь говориться про lvalue и rvalue, но UB уже "серьезно папахивает". ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 18:13 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
что такое UB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 18:15 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Tubrikчто такое UB undefined behavior ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 18:24 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Хотя, стандарт чаще употребляет "the behavior is unspecified" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 18:26 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
чет у меня молча компилит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 18:33 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Tubrikчет у меня молча компилит так и должно быть. с точки зрерия синтаксиса конструкция правльная. но результат подобной операци не определен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 19:00 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Предлагаю открыть на скруле рубрику "Никто не забыт, ничто не забыто" или "Бояны современности..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 20:29 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Tubrikчет у меня молча компилит VS, билдер и все прочие компилят молча свои не стандартные вещи. Так почему они должны кричать об UB? Вполне возможно, для для определенных компиляторов результат определен, и они предпологают, что ты знаешь о том, что произойдет. А, возможно, компилятор еще "не дорос". ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 09:54 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
maytonПредлагаю открыть на скруле рубрику "Никто не забыт, ничто не забыто" или "Бояны современности..." Точно, уже коллекцию можно составлять. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 09:55 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Akh пишет: > VS, билдер и все прочие компилят молча свои не стандартные вещи. Так > почему они должны кричать об UB? Нет, все компиляторы С и С++ должны UB компилировать молча согласно стандарту. Это - не прихоть производителя. Вполне возможно, для для определенных > компиляторов результат определен, и они предпологают, что ты знаешь о > том, что произойдет. Ни для какого компилятора результат не определен. Опять же, согласно стандарту. А раз результат не определен, то производители имеют право применять нестабильные алгоритмы для генерации кода (т.е. такие, которые могут приводить к разным (непредсказуемым) результатам в смысле порядка вычислений подвыражений). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 11:38 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
MasterZiv Вполне возможно, для для определенных > компиляторов результат определен, и они предпологают, что ты знаешь о > том, что произойдет. Ни для какого компилятора результат не определен. Опять же, согласно стандарту. А раз результат не определен, то производители имеют право применять нестабильные алгоритмы для генерации кода (т.е. такие, которые могут приводить к разным (непредсказуемым) результатам в смысле порядка вычислений подвыражений). Posted via ActualForum NNTP Server 1.4 А имют право применить стабильный алгоритм и опубликовать его результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 11:41 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
MasterZiv Akh пишет: > VS, билдер и все прочие компилят молча свои не стандартные вещи. Так > почему они должны кричать об UB? Нет, все компиляторы С и С++ должны UB компилировать молча согласно стандарту. Это - не прихоть производителя. Сцылку мона? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 11:42 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
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 не канают, так как немножко про другое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 11:43 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) 5.0.4 не нашел в ISO/IEC 9899:1999 Вас не затруднит процитировать ? Интересует именно объявлена ли такая конструкция как UB или вычисляется по стандарту именно таким образом (например в целях обратной совместимости). примеры типа i = i++ или i = ++i + 1 не канают, так как немножко про другое Я про эти же примеры. Я к тому же сказал, что они "папахивают" нашим примером. Нужные не нашел, поэтому привел похожие. Кстати, если в стандарте нет behavior is specified, значит это надо считать behavior is unspecified. Т.е., чтобы доказать, что результат определен, это должно быть каким-то образом описано в стандарте. Может даже составлено из нескольких фактов, а не обязательно напрямую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 11:57 |
|
||
|
Странное отличие с инкрементов в C++ и C#
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2007, 12:19 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34708448&tid=2028381]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 497ms |

| 0 / 0 |
