Результаты поиска по запросу "undefined-behavior"

7 ответов

, Это объяснение, основанное на UNIX, но похожий механизм используется во всех ОС.

еялся, что кто-то сможет прояснить, что именно подразумевается под неопределенным поведением в C ++. Учитывая следующее определение класса: class Foo { public: explicit Foo(int Value): m_Int(Value) { } void SetValue(int Value) { m_Int = Value; } ...

8 ответов

Макросы и постинкремент

Вот еще несколько странных макросов, на которые я надеялся пролить свет: #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 увеличивается дважды, но не ...

3 ответа

Является ли это четко определенным / законным для размещения новых несколько раз по одному и тому же адресу?

(Примечание: этот вопрос был мотивирован попыткой создать хакерскую обработку препроцессора, чтобы сгенерировать неоперативное распределение, чтобы ответить на этот другой вопрос: Макрос, который принимает новый ...

ТОП публикаций

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; }Итак, вот сделка:Целочисленное ...

1 ответ

Почему char * вызывает неопределенное поведение, а char [] нет?

Попытка изменить строковый литерал приводит к неопределенному поведению: char * p = "wikipedia"; p[0] = 'W'; // undefined behaviourОдин из способов предотвратить это - определить его как массив вместо указателя: char p[] = "wikipedia"; p[0] = ...

5 ответов

странное поведение 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); }после ...

3 ответа

Насколько губительно целочисленное переполнение в C ++?

Мне было просто интересно, насколько разрушительным является целочисленное переполнение. Возьмите следующий пример программы: #include <iostream> int main() { int a = 46341; int b = a * a; std::cout << "hello world\n"; }посколькуa * a ...

2 ответа

Определенное поведение для выражений

Стандарт C99 говорит в $ 6.5.2. Между предыдущей и следующей точкой последовательности объект должен иметь свое сохраненное значение, измененное не более одного раза путем оценки выражения. Более того,предыдущее значение должно быть прочитано ...

2 ответа

Очки последовательности и порядок оценки

Я читал K & R и наткнулся на этот пример о неопределенности в поведении, оценивая выражение какa[i]=i++; Спецификация C99 в $ 6.5.2 говорит, что Между предыдущей и следующей точкой последовательности объект должен иметь свое сохраненное ...

2 ответа

Это неопределенное поведение, чтобы отбросить константу параметра функции?

Представьте, что у меня есть эта функция C (и соответствующий прототип в заголовочном файле) void clearstring(const char *data) { char *dst = (char *)data; *dst = 0; }Есть ли неопределенное поведение в приведенном выше коде,кастингconst прочьили ...