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

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

Undefined поведение и точки последовательности

Что такое "точки последовательности"? Какова связь между поведением undefined и точками последовательности? Я часто использую смешные и запутанные выражения типа a[++i] = i;, чтобы заставить себя чувствовать себя лучше. Почему я должен прекратить...
14 нояб. '10 в 8:37
15 отв.

Почему эти конструкции используют неопределенное поведение до и после приращения?

#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i); // 2 Should be 1, no ? volatile int u = 0; u = u++ + ++u; printf("%d\n", u); // 1 u = 1...
04 июня '09 в 12:17
5 отв.

Undefined поведение и последовательности точек перезагружены

Рассмотрите эту тему в следующем разделе: Предыдущий взнос Undefined поведение и точки последовательности Пересмотрите это смешное и запутанное выражение (выделенные курсивом фразы взяты из вышеупомянутой темы * smile *): i += ++i; Мы говори...
09 янв. '11 в 11:40
10 отв.

Почему a = (a + b) - (b = a) плохой выбор для замены двух целых чисел?

Я наткнулся на этот код для замены двух целых чисел без использования временной переменной или использования побитовых операторов. int main(){ int a=2,b=3; printf("a=%d,b=%d",a,b); a=(a+b)-(b=a); printf("\na=%d,b=%d",a,b); retur...
27 дек. '13 в 15:24
3 отв.

В C99 есть f() + g() undefined или просто неопределено?

Раньше я думал, что на C99, даже если побочные эффекты функций f и g вмешиваются, и хотя выражение f() + g() не содержит точки последовательности, f и g содержат некоторые, поэтому поведение будет неуказанным: либо f() вызывается перед g(), либо g()...
17 окт. '10 в 1:09
6 отв.

Является ли значение x * f (x) неуказанным, если f изменяет x?

Я посмотрел на кучу вопросов о точках последовательности и не смог выяснить, гарантирован ли порядок оценки для x*f(x), если f изменяет x, и это отличается для f(x)*x. Рассмотрим этот код: #include <iostream> int fx(int &x) { x = x + ...
10 сент. '15 в 17:22
6 отв.

Является ли этот код четким?

Этот код берется из обсуждения здесь. someInstance.Fun(++k).Gun(10).Sun(k).Tun(); Является ли этот код четким? Является ли ++k в Fun() оцененным до k в Sun()? Что делать, если k является определяемым пользователем типом, а не встроенным типом? ...
17 янв. '11 в 6:17
4 отв.

точки последовательности в c

Точка последовательности в императивном программировании определяет любую точку в выполнении компьютерной программы, при которой гарантируется, что все побочные эффекты предыдущих оценок будут выполнены, и никаких побочных эффектов от последующих оц...
26 авг. '10 в 16:10
7 отв.

Как работают префикс (++ x) и Postfix (x ++)?

Может ли кто-нибудь сказать мне, как работают префикс/постфиксные операторы? Я много искал онлайн, но ничего не нашел. Из того, что я могу сказать prefex с первого раза, затем выполняет операцию, а затем назначает. Postfix сначала выполнит операцию,...
18 окт. '11 в 21:53
2 отв.

Является ли * & ++ я причиной поведения undefined в С++ 03?

В еще один ответ было указано, что до С++ 11, где i является int, тогда используйте выражение: *&++i вызвало поведение undefined. Это правда? По другому ответу было небольшое обсуждение в комментариях, но это кажется неубедительным.
12 февр. '15 в 0:45
2 отв.

i = f(); определяется, когда f изменяет i?

Связанный вопрос: Любая хорошая причина, почему оператор присваивания не является точкой последовательности? Из comp.lang.c FAQ Я бы сделал вывод о том, что нижеприведенная программа undefined. Как ни странно, он только упоминает вызов f как точку ...
19 мая '11 в 10:16
5 отв.

Почему выражение a = a + b - (b = a) дает предупреждение о точке последовательности в С++?

Ниже приведен тестовый код: int main() { int a = 3; int b = 4; a = a + b - (b = a); cout << "a :" << a << " " << "b :" << b << "\n"; return 0; } При компиляции это дает следующее предуп...
10 нояб. '12 в 2:48
2 отв.

Является ли запятая в списке переменных точкой последовательности?

В следующем типе кода есть точка последовательности между каждой конструкцией переменных или результат undefined? int a = 0; int b = a++, c = a++; Мне не удалось найти в стандарте конкретную ссылку на точку последовательности здесь. Означает ли э...
20 июня '11 в 18:55
5 отв.

Поведение операторов arr [i] = я ++ и я = я + 1 в C и С++

В языках C и С++ оператор arr[i] = i++; вызывает поведение undefined. Почему оператор i = i + 1; не вызывает поведение undefined?
03 июня '17 в 9:51
1 отв.

Имеет ли int a = 1, b = a ++; вызывать поведение undefined?

Вызывает ли int a=1, b=a++; поведение undefined? Между инициализацией a и ее доступом и модификацией в инициализаторе для b не существует последовательности точек последовательности, но, насколько я могу судить, инициализация не является "модификаци...
25 апр. '13 в 18:39