Вопросы по теме 'sequence-points'

Segfault с помощью strcmp
Я использую strcmp следующими способами Передача имен массивов char[] Передача указателей на строковые литералы, но второй результат приводит к ошибке seg. хотя я подтвердил, что указатели указывают на правильные строковые литералы, я не...
2098 просмотров
schedule 04.06.2022

Точка последовательности после оператора return?
В моем ответе на вопрос здесь Я объяснил, что происходит, когда постфикс ++ используется для глобальной переменной в той же строке, что и оператор return . В информационном приложении C к C11 указано, что точка следования находится сразу после...
321 просмотров
schedule 29.11.2022

Индексирует ли новый элемент карты и имеет ли что-то, что читает его, назначенное ему неопределенное поведение или просто неуказанное?
После ответа на этот вопрос возник долгая дискуссия о том, является ли рассматриваемый код неопределенным поведением или нет. Вот код: std::map<string, size_t> word_count; word_count["a"] = word_count.count("a") == 0 ? 1 : 2;...
255 просмотров

Точки последовательности и побочные эффекты в C
В этом C-FAQ рассказывается о точка последовательности ; В Стандарте указано, что Между предыдущей и следующей точкой последовательности сохраненное значение объекта должно быть изменено не более одного раза при вычислении выражения. Кроме...
918 просмотров
schedule 10.04.2023

Точка последовательности && оператор
Для C++03 стандарт говорит, что между левым и правым операндом оператора && есть точка последовательности, так что все побочные эффекты левого оператора имеют место до того, как будет осуществлен доступ к правому оператору. So int i = 0; if...
337 просмотров

Последовательность в составном условном выражении
Оператор if в следующем примере взят из старого проекта, который я пытаюсь построить снова. Мне жаль, что это не проверяемый образец в том смысле, что он не воспроизводит ошибку, он сам по себе отлично компилируется. enum S { }; struct R {...
77 просмотров
schedule 25.02.2023

операция над «i» может быть неопределенной
У меня есть этот код, чтобы взять строку формы bla_2 и разделить ее: void separate(char* str, char* word, int* n) { int i = 0; while(str[i] != '_') { word[i] = str[i++]; } *n = str[++i] - '0'; } Я получил:...
3288 просмотров
schedule 25.08.2023

Что делает стандарт C таким сложным для определения точки последовательности?
По моему мнению, с предварительным и почтовым приращением в C. A post-increment вступит в силу после утверждения. Пример: int num = 10; int sum = num ++; //sum & num at this point is 10 printf("%d %d", sum, num); //we should get 10 11...
47 просмотров
schedule 21.06.2022

Порядок оценки для передачи аргументов функции — порядок операций для F1(int F2(int& x), int x)
Итак, я писал код ранее. В частности, это была строка: EnterNode( FindNode( terrain_X, terrain_Y, travel_dir ), travel_dir ); Я заметил, что после тестирования моей программы происходит что-то странное. Значение, полученное внешней функцией,...
445 просмотров

Какие флаги компиляции следует использовать, чтобы избежать ошибок времени выполнения
Только что узнал здесь , что -Wsequence-point флаг компиляции выдает предупреждение, когда код может вызывать UB. Я пробовал это с заявлением вроде int x = 1; int y = x+ ++x; и это сработало очень хорошо. До сих пор я компилировал с...
587 просмотров

Операнды сдвига упорядочены в C ++ 17
Я читал в C ++ 17 Standard $ 8.5.7.4: Выражение E1 секвенировано перед выражением E2. для операторов смены. Также в правиле 19 cppreference говорится: In a shift operator expression E1<<E2 and E1>>E2, every value...
444 просмотров

Ассоциативность операторов с операторами «постфиксного декремента» и «логического И» в c
Отказ от ответственности: я не пишу код подобным образом, я просто пытаюсь понять, как работает язык c!!!! Выход 12. Это выражение (a-- == 10 && a-- == 9) оценивается слева направо, и a по-прежнему равно 10 в a-- == 10 , но a равно...
353 просмотров

Будет ли отключение прерываний защищать энергонезависимую переменную или может произойти переупорядочение?
Предположим, INTENABLE - это регистр микроконтроллера, который разрешает / запрещает прерывания, и я объявил его где-то в моих библиотеках как изменчивую переменную, расположенную по соответствующему адресу. my_var - это некоторая переменная,...
473 просмотров

Порядок оценки языка C
x+=x*=x Неопределенное поведение? Может ли кто-нибудь объяснить это правило в порядке оценки ? Что такое «разовая оценка»? Что противоположно «единичной оценке»? # P1 #
152 просмотров

Является ли (a = 1) = 2 неопределенным поведением в С++ 98?
Аналогичные коды, например (a+=1)%=7; , где a — переменная int . Мы знаем, что оператор += или = не является точкой последовательности, поэтому у нас есть два побочных эффекта между двумя соседними точками последовательности. (здесь мы...
115 просмотров

Связанные составные назначения с секвенированием С ++ 17 все еще не определены?
Изначально я привел более сложный пример, этот был предложен @n. 'местоимения' м. в теперь удаленном ответе. Но вопрос стал слишком длинным, смотрите историю редактирования, если вам интересно. Имеет ли следующая программа четко определенное...
307 просмотров