Запитання з тегом «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 У цьому контексті …

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 років тому . Заблокований . Це запитання та …

15
На практиці, чому різні компілятори обчислюють різні значення int x = ++ i + ++ i ;?
Розглянемо цей код: int i = 1; int x = ++i + ++i; У нас є деякі здогади щодо того, що компілятор може зробити для цього коду, припускаючи, що він компілюється. обидва ++iповертаються 2, в результаті чого x=4. один ++iповертається, 2а інший повертається 3, в результаті чого x=5. обидва ++iповертаються …

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 дозволяє компілятору надрукувати "Привіт" для наступного фрагмента #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } Це, мабуть, має щось спільне з потоками та можливостями оптимізації. Мені здається, що це може здивувати багатьох людей. Хтось …

5
Чому вдосконалений оптимізатор GCC 6 порушує практичний код C ++?
У GCC 6 є нова функція оптимізатора : вона передбачає, що thisце не завжди є нульовим і оптимізується на основі цього. Поширення діапазону значень тепер передбачає, що цей покажчик функцій-членів C ++ не є нульовим. Це виключає загальні перевірки нульових покажчиків, але також порушує деякі невідповідні бази коду (наприклад, Qt-5, …

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 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.