Описание тега unspecified-behavior

Unpredictable, but valid, behavior of a program that an implementation is not required to document.
2 ответа

C++ cout секвенирование побочных эффектов

Предположим, следующий фрагмент кода: #include <iostream> using namespace std; char one() { cout << "one\n"; return '1'; } char two() { cout << "two\n"; return '2'; } int main(int,char**) { // 1: cout << one() << '\n' &…
23 авг '14 в 20:52
5 ответов

Как реализовать memmove в стандарте C без промежуточной копии?

Со страницы man в моей системе: void * memmove (void * dst, const void * src, size_t len); ОПИСАНИЕ Функция memmove() копирует len байтов из строки src в строку dst. Две строки могут перекрываться; копия всегда делается в неразрушающем манера. Из ст…
26 окт '10 в 11:49
3 ответа

Это неопределенное поведение для сравнения указателей на разные массивы на равенство?

Операторы равенства имеют семантические ограничения реляционных операторов на указатели: Операторы == (равно) и!= (Не равно) имеют те же семантические ограничения, преобразования и тип результата, что и операторы отношения, за исключением их более н…
05 фев '11 в 21:26
3 ответа

Как отловить неопределенное поведение при инициализации аргумента функции

Следующий код работает в clang++, но эффектно падает в g ​​++ #include<vector> #include<iostream> template<class Iterator> double abs_sum(double current_sum, Iterator it, Iterator it_end){ if (it == it_end) return current_sum; retu…
4 ответа

Причина возврата Map.unzip в Scala (Iterable, Iterable)

На днях мне стало интересно, почему scala.collection.Map определяет метод распаковки как def unzip [A1, A2] (implicit asPair: ((A, B)) ⇒ (A1, A2)): (Iterable[A1], Iterable[A2]) Поскольку метод возвращает "только" пару Iterable вместо пары Seq, не га…
31 мар '11 в 14:49
4 ответа

Является ли (x++, y) + (y++, x) неопределенным или неопределенным, и если он не указан, что он может вычислить?

Оператор последовательности запятой вводит точку последовательности в выражении. Мне интересно, означает ли это, что программа ниже избегает неопределенного поведения. int x, y; int main() { return (x++, y) + (y++, x); } Если он избегает неопределен…
18 дек '12 в 15:12
2 ответа

Как исправить эту проблему "срок действия не указан" в соответствии с GTMatrix?

У меня есть сайт WeeTech Solution. И всякий раз, когда я проверяю свой веб-сайт на "GT Matrix", показывается номер проблемы, например... • https://www.weetechsolution.com/css/content_slider_style.css (срок действия не указан) Как исправить эту пробл…
1 ответ

Может ли выражение с использованием указателей вызывать неопределенное (не неопределенное!) Поведение в контексте constexpr?

Согласно cppreference (выделение мое): Выражение постоянной константы - это любое выражение, которое не имеет ни одного из следующих выражений в любом подвыражении. (...) Выражение, оценка которого приводит к любой форме неопределенного поведения ос…
2 ответа

C++ инициализация переменной области имен пространства

Рассмотрите следующую программу: (см. Живую демонстрацию здесь.) #include <iostream> inline double fun() { return 3.0; } extern double m; double d2=m; int main() { std::cout<<d2; } double m=fun(); Я ожидал получить вывод программы как 3.…
3 ответа

Это неопределенное поведение, если несколько операндов в составном выражении изменяют один и тот же объект?

Я смутно помню, что где-то читал, что это неопределенное поведение, если несколько операндов в составном выражении изменяют один и тот же объект. Я полагаю, что пример этого UB показан в приведенном ниже коде, однако я скомпилировал на g++, clang++ …
1 ответ

Необъяснимое поведение cuda, связанное с памятью

Так что в основном я взял свой код на C++ (который работает правильно) и переписал его на cuda (у меня нет опыта работы с cuda). Одна часть кода (метод execute ()) не работает правильно, и я действительно не знаю почему. Поэтому мой вопрос заключает…
06 мар '14 в 21:45
2 ответа

Является ли это memset-memcmp для структурной переменной допустимым C?

Законно ли это memset структура к некоторому значению, затем сравните его с memcmp? struct S { // struct definition not relevant, but it has bitfields }; struct S invalid_S; memset(&invalid_S, 0xFF, sizeof invalid_S); struct S value; memset(&amp…
27 дек '17 в 14:20
1 ответ

Не указано, включает ли заголовок стандартной библиотеки произвольные заголовки?

Есть утверждение, в каких заголовках стандартной библиотеки C++ гарантированно включен другой заголовок?: Заголовки стандартной библиотеки C++ могут включать друг друга неуказанными способами, поэтому программисты обычно не должны зависеть от одного…
2 ответа

Существует ли точка последовательности между вызовом функции, возвращающей объект, и вызовом метода для этого объекта?

Если я напишу f(x)->g(args, ...) могу ли я положиться на точку последовательности после f(x) до оценки args, ...? Я могу видеть аргументы в обоих направлениях: §1.9.17 "При вызове функции (независимо от того, является ли функция встроенной), посл…
01 мар '13 в 21:08
2 ответа

Порядок оценки: неопределенное поведение? или дефект компилятора?

Я получаю неправильный код asm для приведенного ниже тестового кода от компилятора C. Это связано с неопределенным поведением? void SimulatedTest(void) { if ( (a) || (b && c || d) == 1 ) { i = 2; } else { i = 4; } } Какой стандарт говорит: 6…
2 ответа

Неопределенное поведение в данном коде?

Каково возвращаемое значение f(p,p), если значение p инициализируется до 5 перед вызовом? Обратите внимание, что первый параметр передается по ссылке, тогда как второй параметр передается по значению. int f (int &x, int c) { c = c - 1; if (c==0)…
4 ответа

Переместить семантику и оценку порядка функций

Предположим, у меня есть следующее: #include <memory> struct A { int x; }; class B { B(int x, std::unique_ptr<A> a); }; class C : public B { C(std::unique_ptr<A> a) : B(a->x, std::move(a)) {} }; Если я правильно понимаю правила …
3 ответа

Является ли func() + func() неопределенным поведением?

Я только знаю i = i++; является неопределенным поведением, но если в выражении вызываются две или более функций, и все функции одинаковы. Это неопределенно? Например: int func(int a) { std::cout << a << std::endl; return 0; } int main() …
2 ответа

Ни одно из неопределенного, определенного реализацией, неопределенного поведения

C++ 03 $ 5.3.3 / 2 - "Размер наиболее производного класса должен быть больше нуля (1,8)". $1.8/4 - "Если это не битовое поле (9.6), наиболее производный объект должен иметь ненулевой размер и занимать один или несколько байтов памяти". Тогда мой воп…
04 дек '10 в 00:25
2 ответа

Считается ли разыменование NULL-указателя неопределенным или неопределенным поведением?

Консенсус вопросов о стеке потока говорит о том, что это неопределенное поведение. Тем не менее, я недавно видел выступление Чарльза Бэй в 2016 году под названием:Перестановка инструкций везде: правило "как будто" в C++ и роль последовательности. В …