Вопросы с тегом «undefined-behavior»

Непредсказуемый результат компиляции или выполнения программы, который нарушает правила языка, которые не должны обеспечивать ни компилятор, ни интерпретатор, ни система времени исполнения. НЕ ИСПОЛЬЗУЙТЕ этот тег для вопросов, касающихся типа данных или возвращаемого значения «undefined». В этих случаях вместо этого следует использовать тег [undefined].

5
Неопределенные точки поведения и последовательности
Что такое «точки последовательности»? Какова связь между неопределенным поведением и точками последовательности? Я часто использую смешные и запутанные выражения, например a[++i] = i;, чтобы чувствовать себя лучше. Почему я должен прекратить использовать их? Если вы прочитали это, обязательно посетите следующий вопрос. Неопределенное поведение и точки последовательности перезагружены . (Примечание. Предполагается, …




5
Допускает ли стандарт C ++ неинициализированный bool для сбоя программы?
Я знаю, что «неопределенное поведение» в C ++ может позволить компилятору делать все, что он захочет. Однако у меня произошел сбой, который удивил меня, так как я предположил, что код достаточно безопасен. В этом случае настоящая проблема возникла только на конкретной платформе, использующей определенный компилятор, и только если была включена …

22
Является ли неинициализированная локальная переменная самым быстрым генератором случайных чисел?
Я знаю, что неинициализированная локальная переменная - это неопределенное поведение ( UB ), а также у значения могут быть представления ловушек, которые могут повлиять на дальнейшие операции, но иногда я хочу использовать случайное число только для визуального представления и больше не буду использовать их в другой части Программа, например, установить …

11
Почему f (i = -1, i = -1) неопределенное поведение?
Я читал о порядке нарушений оценки , и они приводят пример, который озадачивает меня. 1) Если побочный эффект на скалярный объект не секвенирован относительно другого побочного эффекта на тот же скалярный объект, поведение не определено. // snip f(i = -1, i = -1); // undefined behavior В этом контексте iэто …

14
Почему это делается для выхода из цикла на некоторых платформах, а не на других?
Я недавно начал изучать C, и я беру класс с C в качестве предмета. В настоящее время я играю с петлями и сталкиваюсь со странным поведением, которое не знаю, как объяснить. #include <stdio.h> int main() { int array[10],i; for (i = 0; i <=10 ; i++) { array[i]=0; /*code should …

5
Почему целочисленное переполнение без знака определяется поведением, а переполнение со знаком - нет?
Целочисленное переполнение без знака хорошо определяется стандартами C и C ++. Например, стандарт C99 ( §6.2.5/9) гласит Вычисления с использованием беззнаковых операндов никогда не могут переполниться, потому что результат, который не может быть представлен результирующим целочисленным типом без знака, уменьшается по модулю на число, которое на единицу больше наибольшего значения, …

11
Каковы все распространенные неопределенные поведения, о которых должен знать программист C ++? [закрыто]
Трудно сказать, что здесь спрашивают. Этот вопрос является двусмысленным, расплывчатым, неполным, чрезмерно широким или риторическим, и на него нельзя дать разумный ответ в его нынешней форме. Чтобы получить разъяснения по этому вопросу, чтобы его можно было снова открыть, посетите справочный центр . Закрыто 7 лет назад . Locked . Этот …

5
Почему этот цикл выдает «предупреждение: итерация 3u вызывает неопределенное поведение» и выводит более 4 строк?
Компилируя это: #include <iostream> int main() { for (int i = 0; i < 4; ++i) std::cout << i*1000000000 << std::endl; } и gccвыдает следующее предупреждение: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations] std::cout << i*1000000000 << std::endl; ^ Я понимаю, что есть целочисленное переполнение со знаком. Чего я не …

8
Оптимизация «время (1);» в C ++ 0x
Обновлено, смотрите ниже! Я слышал и читал, что C ++ 0x позволяет компилятору напечатать «Hello» для следующего фрагмента #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } По-видимому, это как-то связано с потоками и возможностями оптимизации. Мне кажется, что это может удивить многих людей, хотя. У …

5
Почему улучшенный оптимизатор GCC 6 нарушает практический код C ++?
В GCC 6 появилась новая функция оптимизатора : она предполагает, что thisона всегда не равна нулю, и оптимизирует на основе этого. Распространение диапазона значений теперь предполагает, что указатель this функций-членов C ++ не равен NULL. Это исключает обычные проверки нулевого указателя, но также нарушает некоторые несоответствующие кодовые базы (такие как …

6
Почему целочисленное переполнение на x86 с GCC вызывает бесконечный цикл?
Следующий код переходит в бесконечный цикл GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } Итак, дело в следующем: подписанное целочисленное …
129 c++  c  gcc  x86  undefined-behavior 

5
Доступ к неактивному члену союза и неопределенному поведению?
У меня создалось впечатление, что доступ к unionчлену, отличному от последнего набора, - это UB, но я не могу найти надежную ссылку (кроме ответов, в которых утверждается, что это UB, но без какой-либо поддержки со стороны стандарта). Итак, это неопределенное поведение?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.