С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Operation may be undefined

18.01.2021, 21:44. Показов 2986. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
std::shared_ptr<unsigned char> hmacSha1(getHMACSha1(counter, std::to_string(1)));
 
    uint32_t offset{static_cast<uint32_t>(hmacSha1.get()[19] & 0xf)};
 
    uint32_t truncatedHash = (hmacSha1.get()[offset++] & 0x7f) << 24 
                            | (hmacSha1.get()[offset++] & 0xff) << 16 
                            | (hmacSha1.get()[offset++] & 0xff) << 8 
                            | (hmacSha1.get()[offset++] & 0xff);
Откуда warning operation on ‘offset’ may be undefined ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2021, 21:44
Ответы с готовыми решениями:

Ошибка The Undo operation encountered a context that is different from what was applied in the corresponding Set operation...
The Undo operation encountered a context that is different from what was applied in the corresponding Set operation.The possible cause...

Как исправит Notice: Undefined index: sessy in и undefined variable
Доброго времени суток! Возможно это мелочь и с высоты опытного программиста это легкая задача, но мне пока не удаётся её решить. Кто знает...

Ошибки Call to undefined function и Undefined index: disabled
помогите разобратьcz, уже много что перепробовал ни могу исправить Call to undefined function App\Http\Controllers\array_prepend()...

25
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
18.01.2021, 21:58
Лучший ответ Сообщение было отмечено ReYalp как решение

Решение

ReYalp, offset модифицируется (offset++) несколько раз в одном выражении.
1
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
18.01.2021, 21:59  [ТС]
gray_fox, тоесть лучше делать не всё сразу, а по порядку?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,208
18.01.2021, 22:16
Цитата Сообщение от ReYalp Посмотреть сообщение
тоесть лучше делать не всё сразу, а по порядку?
Лучше не злоупотреблять операциями с побочными эффектами. Чем вам не понравилось человеческое

C++
1
2
3
4
    uint32_t truncatedHash = (hmacSha1.get()[offset] & 0x7f) << 24 
                            | (hmacSha1.get()[offset + 1] & 0xff) << 16 
                            | (hmacSha1.get()[offset + 2] & 0xff) << 8 
                            | (hmacSha1.get()[offset + 3] & 0xff);
?
1
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
18.01.2021, 22:16
Цитата Сообщение от ReYalp Посмотреть сообщение
тоесть лучше делать не всё сразу, а по порядку?
Знакомьетесь: Алёна с++.
Живет в Редмонде. Замужем) Муж у неё тоже программист.


В с++11 стандарт ввел понятие "Sequenced-before rules".
Но общий смысл остался прежним: в пределах одной точки следования только одна модификация.
1
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
18.01.2021, 22:16
Цитата Сообщение от ReYalp Посмотреть сообщение
gray_fox, тоесть лучше делать не всё сразу, а по порядку?
Ну стоит как минимум на пару выражений разбить
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
18.01.2021, 22:18  [ТС]
TheCalligrapher, еще и заметил что последний ++ лишний
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,208
18.01.2021, 22:31
Цитата Сообщение от eva2326 Посмотреть сообщение
Знакомьетесь: Алёна с++.
Полностью устаревшая, совершено бесполезная сегодня статья.

Добавлено через 34 секунды
Цитата Сообщение от ReYalp Посмотреть сообщение
еще и заметил что последний ++ лишний
Кто ж его знает, лишний он или нет. Приведен явно не весь код.
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
18.01.2021, 22:46
Цитата Сообщение от ReYalp Посмотреть сообщение
TheCalligrapher, еще и заметил что последний ++ лишний
В сниппете TheCalligrapher вообще нет модификации offset.
Если в оригинальном коде инкремент использовался только для доступа к этим первым 4-м элементам массива, то там он не уместен и только сбивает с толку.
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
18.01.2021, 23:06
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Полностью устаревшая, совершено бесполезная сегодня статья.
Нет, не устаревшая.
Понятие "точка следования" актуально и по сей день.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,208
18.01.2021, 23:42
Цитата Сообщение от eva2326 Посмотреть сообщение
Нет, не устаревшая.
Понятие "точка следования" актуально и по сей день.
Полностью устаревшая. Понятие "точки следования" в С++ не существует вообще - его упразднили по причине полной и безнадежной неадекватности.

Причем многие части стандарта языка, опирающиеся на понятие "точки следования", были признаны дефектными именно по этой причине. Т.е. упразднение этого понятия имеет ретроактивный эффект. Этого понятия не просто нет, его формально "никогда и не было".
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
18.01.2021, 23:52
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Понятие "точки следования" в С++ не существует вообще - его упразднили по причине полной и безнадежной неадекватности.
Их не упразднили. Их улучшили.
Новые правила базируются на том же самом понятии точки следования.

Например в фразе:
If A is sequenced before B, then evaluation of A will be complete before evaluation of B begins.
Человеку со стороны не очевидно, что такое A, где оно начинается, где заканчивается, и что именно выступает в качестве разделителя.

Любая попытка объяснить такому человеку сабж, неизбежно приведет к тому, что вы прибегните к понятию точки следования.

Вы можете не использовать словосочетание "точка следования", но оперировать вы будете именно этим понятием.

Польза статьи Алёны в том, что она знакомит читателя с понятием "точки следования".
И в дальнешем, человек уже без труда сможет понять современные правила
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
18.01.2021, 23:59
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Понятие "точки следования" в С++ не существует вообще
И верно, и одновременно не верно. Понятие точки следования трансформировалось в отношения Sequenced Before, Sequenced After, Unsequenced, Indeterminately Sequenced.
1
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
19.01.2021, 00:03
Цитата Сообщение от jugu Посмотреть сообщение
Понятие точки следования трансформировалось в отношения Sequenced Before, Sequenced After, Unsequenced, Indeterminately Sequenced.
Правила трансформировались.
А не само понятие.

Определение точки следования:
Точки следования (sequence points) - это некие точки в программе, где состояние реальной программы полностью соответствует состоянию абстрактной машины, описанной в Стандарте. С помощью точек следования стандарт объясняет, что может, а чего не может делать компилятор и что нам нужно сделать, чтобы написать корректный код.
(ц) Алена с++
Сохраняет свою актуальность.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,208
19.01.2021, 00:32
Цитата Сообщение от jugu Посмотреть сообщение
И верно, и одновременно не верно. Понятие точки следования трансформировалось в отношения Sequenced Before, Sequenced After, Unsequenced, Indeterminately Sequenced.
Эти понятия тем и отличаются от понятия "точки следования", что не подразумевают и не требуют наличия никакой "точки". Вся суть (!) этой трансформации как раз и сводится в переходе от опосредованного "барьерного" подхода A < точка < B к набору непосредственных парных отношений A < B. То есть вся суть этой трансформации как раз и заключается в уничтожении точки (!)

Цитата Сообщение от eva2326 Посмотреть сообщение
Сохраняет свою актуальность.
Абсолютно нигде в спецификации языка С++ это понятие не используется и более не имеет никакой актуальности.

Цитата Сообщение от eva2326 Посмотреть сообщение
Точки следования (sequence points) - это некие точки в программе, где состояние реальной программы полностью соответствует состоянию абстрактной машины, описанной в Стандарте. С помощью точек следования стандарт объясняет, что может, а чего не может делать компилятор и что нам нужно сделать, чтобы написать корректный код.
Это определение, вообще-то - полнейшая чушь, даже для той спецификации, где еще были точки следования.

Соответствие между реальной программой и абстрактной машиной существует только в проявлениях наблюдаемого поведения. При этом даже в точках возникновения наблюдаемого поведения никакой речи о совпадении состояния реальной программы с абстрактной машиной не идет. Совпадать должно только проявление конкретного наблюдаемого поведение в этих точках и больше ничего.

И к точкам следования все это не имеет никакого отношения.
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
19.01.2021, 00:56
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Абсолютно нигде в спецификации языка С++ это понятие не используется и более не имеет никакой актуальности.
Что здесь имеется ввиду?
Цитата Сообщение от eva2326 Посмотреть сообщение
If A is sequenced before B, then evaluation of A will be complete before evaluation of B begins.
Попробуйте объяснить, не прибегая к понятию точки следования.
Любопытно посмотреть, как это у вас получится.


Цитата Сообщение от eva2326 Посмотреть сообщение
Человеку со стороны не очевидно, что такое A, где оно начинается, где заканчивается, и что именно выступает в качестве разделителя.
Добавлено через 13 минут
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Совпадать должно только проявление конкретного наблюдаемого поведение в этих точках и больше ничего.
Это ваше "и больше ничего" - это и есть то самое соответствие:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Соответствие между реальной программой и абстрактной машиной существует только в проявлениях наблюдаемого поведения.
О котором пишет Алена. Простыми и понятными словами.

Вы, кстати, можете попробовать дать своё собственное определение точки следования.
Раз уж вам так не нравится версия Алены.
Любопытно посмотреть, что у вас получится.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,208
19.01.2021, 01:11
Цитата Сообщение от eva2326 Посмотреть сообщение
Что здесь имеется ввиду?

Попробуйте объяснить, не прибегая к понятию точки следования.
Любопытно посмотреть, как это у вас получится.
Чего? Ваша цитата из стандарта - это и есть прекрасное объяснение без понятия точки следования )))

Цитата Сообщение от eva2326 Посмотреть сообщение
Это ваше "и больше ничего" - это и есть то самое соответствие:
О котором пишет Алена. Простыми и понятными словами..
Нет, Алена пишет не об этом. Алена пишет о соответствии всего состояния в каждой точке следования. Это - двойная ошибка.

Во-первых, как я ясно сказал выше, говорить о соответствии можно только в точках наблюдаемого поведения, а не в точках следования, как некорректно утверждает Алена. Это совершено разные вещи.

Во-вторых, какое-либо соответствие ограниченно только наблюдаемым поведением, а не всем состоянием программы, как некорректно утверждает Алена.

Я дал исчерпывающее объяснение. Повторять одно и тоже по кругу я не собираюсь. Вопрос грубой некорректности определения Алены больше обсуждаться не будет.

Цитата Сообщение от eva2326 Посмотреть сообщение
Вы, кстати, можете попробовать дать своё собственное определение точки следования.
Раз уж вам так не нравится версия Алены.
Любопытно посмотреть, что у вас получится.
Зачем давать "свое собственное"? Когда в языке существовало понятие точки следования, у него было совершенно четкое готовое определение:

Точка следования - это точка, в которой все побочные эффекты предыдущих вычислений уже возымели место, а ни один из побочных эффектов последующих вычислений - еще нет.


Вот именно эта глобальная барьерная категоричность точки следования ("все побочные эффекты предыдущих" и "ни один из побочных эффектов последующих") и является причиной отказа от понятия точки следования. Такие тотальные барьеры более неприемлемы. Язык перешел от глобального барьера, к набору совершенно не зависящих друг от друга парных соотношений sequenced before.
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
19.01.2021, 01:29
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Чего?
Что не понятно?
Объясните, что здесь написанно:
Цитата Сообщение от eva2326 Посмотреть сообщение
If A is sequenced before B, then evaluation of A will be complete before evaluation of B begins.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
это и есть прекрасное объяснение
Нет, это не объяснение.
Стандарт косноязычен. Он многое оставляет за кадром:
Цитата Сообщение от eva2326 Посмотреть сообщение
Человеку со стороны не очевидно, что такое A, где оно начинается, где заканчивается, и что именно выступает в качестве разделителя.

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Точка следования - это точка, в которой все побочные эффекты предыдущих вычислений уже возымели место, а ни один из побочных эффектов последующих вычислений - еще нет.
Это тоже самое, что пишет Алена:
Точки следования (sequence points) - это некие точки в программе, где состояние реальной программы полностью соответствует состоянию абстрактной машины, описанной в Стандарте. С помощью точек следования стандарт объясняет, что может, а чего не может делать компилятор и что нам нужно сделать, чтобы написать корректный код.
В каждой точке следования все побочные эффекты кода, который уже выполнен, уже случились, а побочные эффекты для кода, который еще не был выполнен, еще не случились.
(ц)Алёна
Вы обозвали:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
полнейшая чушь
Трактовку, которая полностью совпадает с определением стандарта.
Может быть тогда, вы ещё и определение стандарта тоже считаете полнейшей чушью?
Или у вас двойные стандарты?

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Язык перешел от глобального барьера, к набору совершенно не зависящих друг от друга парных соотношений sequenced before.
Это какой то набор букв.

Какие то непонятные "глобальные барьеры", "соотношения" непойми чего.
Вы в состоянии раскрыть тему так же хорошо, как это сделала Алена?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,208
19.01.2021, 01:37
Цитата Сообщение от eva2326 Посмотреть сообщение
Нет, это не объяснение.
Стандарт косноязычен. Он многое оставляет за кадром:
Нет. Стандарт ничего не оставляет за кадром. Все остальное - ваши проблемы.

Цитата Сообщение от eva2326 Посмотреть сообщение
Это тоже самое, что пишет Алена:
Вы обозвали:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
полнейшая чушь
Трактовку, которая полностью совпадает с определением стандарта.
На подобное наглое вранье (глупый троллинг?) я реагировать не буду.

Цитата Сообщение от eva2326 Посмотреть сообщение
Это какой то набор букв.
Какие то непонятные "глобальные барьеры", "соотношения" непойми чего.
Формальная теория языка С++ - она весьма непроста. Все остальное - ваши проблемы.
0
 Аватар для eva2326
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
19.01.2021, 01:40
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Во-первых, как я ясно сказал выше, говорить о соответствии можно только в точках наблюдаемого поведения, а не в точках следования, как некорректно утверждает Алена. Это совершено разные вещи.
На самом деле фраза:

Цитата Сообщение от eva2326 Посмотреть сообщение
Точки следования (sequence points) - это некие точки в программе, где состояние реальной программы полностью соответствует состоянию абстрактной машины, описанной в Стандарте.
Логически вытекает из фразы:
Цитата Сообщение от eva2326 Посмотреть сообщение
В каждой точке следования все побочные эффекты кода, который уже выполнен, уже случились, а побочные эффекты для кода, который еще не был выполнен, еще не случились.
Это справделиво в отношении всей программы, а не только в отношении точек наблюдаемого поведения.
Похоже это вы, а не Алена, несёте полнейшую чушь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.01.2021, 01:40
Помогаю со студенческими работами здесь

Duplicate key: undefined:undefined
Всем привет, мучаюсь с angularjs. мне нужно запихнуть в обьект res: id и name, вот как я сделал, res ({ id: data.result.id, ...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

Name 'operation' is not defined
Доброго дня! Почему-то при запуске программы выдает ошибку: name 'operation' is not defined. Помогите, пожалуйста, исправить. Ибо по идее...

Функция operation
Напишите функцию operation(m,n,o), в которой m и n — числовые переменные, а o — функциональный литерал, который берет два аргумента и...

Operation not permitted
В каких случаях setpgid() дает ошибку в заголовке?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru