Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Код: c 1. 2. 3. 4. предпологаем что dst имеет достаточно места для копирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 17:25 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
int len = strlen( dst ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 17:28 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
miksoft, не понял, и в чем там ошибка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 17:10 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Void666, а блин все, понял ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 17:11 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Void666, Тест на невнимательность ) А тут где ошибка: Код: c 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 17:14 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Void666Void666, Тест на невнимательность ) А тут где ошибка: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Ну... а что эта функция делает, по-Вашему? То есть, чему будет равен array[0] после её выполнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 17:18 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Void666, это - UB, так как на переменную i ссылаются в разных частях выражения в котором она модифицируется в результате побочного эффекта оператора ++. Код: plaintext 1. Если кратко, то стандарт не определяет будет ли i инкрементирована после вычисления правой части присвоения, или инкремент произойдет уже после присвоения. Чтобы было UB, надо более одного оператора с побочным эффектом перед одной точкой следования. Тут вроде бы нет UB. Тут есть просто стрёмный код. Почему бы не написать так -- не понятно. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 19:48 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
AbstractionНу... а что эта функция делает, по-Вашему? То есть, чему будет равен array[0] после её выполнения? Может быть и 0, а может быть и случайное число. Зависит от того насколько разработчики конкретного компилятора любят своих пользователей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 19:53 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЕсли кратко, то стандарт не определяет будет ли i инкрементирована после вычисления правой части присвоения, или инкремент произойдет уже после присвоения. Странный какой-то стандарт... В старом добром Кернигано-Ричиевском Си результат выражения i++*i++ предсказуем. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 19:58 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Я говорил про стандарт С99 и С++03 (в более поздних не смотрел, но на 99.99% уверен что ничего не поменялось). Т.е. как в С так и С++ такие выражения недопустимы в кроссплатформенных программах. А что там было у K&R мне честно говоря не интересно. Вот вам цитаты из соотв. стандартов: C99 6.5 Expressions ... 3 The grouping of operators and operands is indicated by the syntax.71) Except as specified later (for the function-call (), &&, ||, ?:, and comma operators), the order of evaluation of subexpressions and the order in which side effects take place are both unspecified. ... Annex C (informative) Sequence points 1 The following are the sequence points described in 5.1.2.3: — The call to a function, after the arguments have been evaluated (6.5.2.2). — The end of the first operand of the following operators: logical AND && (6.5.13); logical OR || (6.5.14); conditional ? (6.5.15); comma , (6.5.17). — The end of a full declarator: declarators (6.7.5); — The end of a full expression: an initializer (6.7.8); the expression in an expression statement (6.8.3); the controlling expression of a selection statement (if or switch) (6.8.4); the controlling expression of a while or do statement (6.8.5); each of the expressions of a for statement (6.8.5.3); the expression in a return statement (6.8.6.4). — Immediately before a library function returns (7.1.4). — After the actions associated with each formatted input/output function conversion specifier (7.19.6, 7.24.2). — Immediately before and immediately after each call to a comparison function, and also between any call to a comparison function and any movement of the objects passed as arguments to that call (7.20.5). C++03 5 Expressions ... 4 Except where noted, the order of evaluation of operands of individual operators and subexpressions of indi- vidual expressions, and the order in which side effects take place, is unspecified.53) 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. Код: plaintext 1. 2. 3. 4. 5. Не смотря на разницу формулировок, на самом деле правила для С и С++ - эквивалентны: Если в выражении нет логических, условных операторов и следования (,) то порядок выполнения побочных эффектов неопределен. У выражения array[i] = i++; есть два побочных эффекта: 1) модификация элемента массива array, 2) модификация i. Какой из них произойдет раньше - неизвестно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 20:44 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, То есть, оператор следования в C++ тоже точка синхронизации? Не знал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 22:21 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
AbstractionAnatoly Moskovsky, То есть, оператор следования в C++ тоже точка синхронизации? Не знал. Ну, учитывая что наиболее корректный перевод словосочетания "sequence points" - "точки следования", то не удивительно что оператор следования задает такие точки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2012, 00:01 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВ старом добром Кернигано-Ричиевском Си результат выражения i++*i++ предсказуем. Кстати, я вам не поверил и пошел поискал доказательство данного утверждения. И вместо него обнаружил что КиР сами утверждали обратное. См. http://c-faq.com/expr/evalorder2.html - объяснения и ссылки на 1 и 2 издания КиР Так что не знаю про какой такой С вы говорили, но боюсь что вам для начала надо предоставить какие-то доказательства своего утверждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2012, 00:46 |
|
||
|
тестовый вопрос, где в коде баг !?? (С)
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyКстати, я вам не поверил И правильно сделал, это я конкретно лажанулся. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2012, 00:49 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38003008&tid=2020739]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
177ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 547ms |

| 0 / 0 |
