Результаты поиска по запросу "undefined-behavior"
, Это объяснение, основанное на UNIX, но похожий механизм используется во всех ОС.
еялся, что кто-то сможет прояснить, что именно подразумевается под неопределенным поведением в C ++. Учитывая следующее определение класса: class Foo { public: explicit Foo(int Value): m_Int(Value) { } void SetValue(int Value) { m_Int = Value; } ...
Макросы и постинкремент
Вот еще несколько странных макросов, на которые я надеялся пролить свет: #define MAX(a,b) (a>b?a:b) void main(void) { int a = 3, b=4; printf("%d %d %d\n",a,b,MAX(a++,b++)); }Выходное значение равно 4 6 5. Значение b увеличивается дважды, но не ...
Является ли это четко определенным / законным для размещения новых несколько раз по одному и тому же адресу?
(Примечание: этот вопрос был мотивирован попыткой создать хакерскую обработку препроцессора, чтобы сгенерировать неоперативное распределение, чтобы ответить на этот другой вопрос: Макрос, который принимает новый ...
Почему целочисленное переполнение в 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; }Итак, вот сделка:Целочисленное ...
Почему char * вызывает неопределенное поведение, а char [] нет?
Попытка изменить строковый литерал приводит к неопределенному поведению: char * p = "wikipedia"; p[0] = 'W'; // undefined behaviourОдин из способов предотвратить это - определить его как массив вместо указателя: char p[] = "wikipedia"; p[0] = ...
странное поведение scanf для краткого int
код выглядит следующим образом: #include <stdio.h> main() { int m=123; int n = 1234; short int a; a=~0; if((a>>5)!=a){ printf("Logical Shift\n"); m=0; } else{ printf("Arithmetic Shift\n"); m=1; } scanf("%d",&a); printf("%d\n", m); }после ...
Насколько губительно целочисленное переполнение в C ++?
Мне было просто интересно, насколько разрушительным является целочисленное переполнение. Возьмите следующий пример программы: #include <iostream> int main() { int a = 46341; int b = a * a; std::cout << "hello world\n"; }посколькуa * a ...
Определенное поведение для выражений
Стандарт C99 говорит в $ 6.5.2. Между предыдущей и следующей точкой последовательности объект должен иметь свое сохраненное значение, измененное не более одного раза путем оценки выражения. Более того,предыдущее значение должно быть прочитано ...
Очки последовательности и порядок оценки
Я читал K & R и наткнулся на этот пример о неопределенности в поведении, оценивая выражение какa[i]=i++; Спецификация C99 в $ 6.5.2 говорит, что Между предыдущей и следующей точкой последовательности объект должен иметь свое сохраненное ...
Это неопределенное поведение, чтобы отбросить константу параметра функции?
Представьте, что у меня есть эта функция C (и соответствующий прототип в заголовочном файле) void clearstring(const char *data) { char *dst = (char *)data; *dst = 0; }Есть ли неопределенное поведение в приведенном выше коде,кастингconst прочьили ...