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

5 ответов

Почему целочисленное переполнение без знака определяется поведением, а переполнение со знаком - нет?

2 ответа

Учитывая состояние стека и регистров, можем ли мы предсказать результат неопределенного поведения printf

Вот простой код на C для теста класса:

7 ответов

, Поскольку при использовании таких целых чисел без знака могут возникнуть непредвиденные ситуации, нет никаких оснований ожидать, что указатели не смогут вести себя еще хуже.

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

2 ответа

Арифметическое смещение вправо дает фиктивный результат?

Я должен быть абсолютно сумасшедшим здесь, ноgcc 4.7.3 на моей машине дает самый абсурдный результат. Вот точный код, который я тестирую: #include <iostream> using namespace std; int main(){ unsigned int b = 100000; cout << (b>>b) << endl; b = b ...

4 ответа

Очки последовательности и побочные эффекты: тихие изменения в C11?

C99 §6.5Выражения (1) Выражение - это последовательность операторов и операндов, которая задает вычисление значения, или которая обозначает объект или функцию, или которая генерирует побочные эффекты, или которая выполняет их комбинацию. (2) ...

8 ответов

Используя вновь объявленную переменную в инициализации (int x = x + 1)?

Я просто наткнулся на поведение, которое удивило меня: При написании: int x = x+1;в C / C ++ - программе (или даже более сложном выражении, включающем только что созданную переменную x), мой gcc / g ++ компилируется без ошибок. В приведенном ...

2 ответа

@ Тони: Честная точка зрения. Это действительно имеет смысл. Спасибо.

я сделаю: const char* const_str = "Some string"; char* str = const_cast<char*>(const_str); // (1) str[0] = "P"; // (2)Где (какая строка) точно находится неопределенное поведение? Я много искал это на SO, но не нашел ни однозначного и точного ...

4 ответа

Как я могу преобразовать произвольный double в целое число, избегая неопределенного поведения?

Допустим, у меня есть функция, которая принимает 64-разрядное целое число, и я хочу вызвать ее с

5 ответов

v - это двумерный массив. Поскольку вы ссылаетесь только на одно измерение, то в итоге вы получаете указатель char на базовый массив, и, следовательно, этот оператор пытается присвоить константу char указателю char. Вы можете использовать двойные кавычки, чтобы заменить константу на строку в стиле C, или вы можете явно ссылаться на v [i] [0], что я и предполагал.

еопределенное поведение, если я прохожу элементы 2D-массива следующим образом? int v[5][5], i; for (i = 0; i < 5*5; ++i) { v[i] = i; }Опять же, это даже компилируется? (Я не могу попробовать это прямо сейчас, я не дома.) Если это не так, то ...

8 ответов

Теперь, если это язык, который определяет, что левая сторона (или правая сторона) всегда должна выполняться первой, то поведение больше не будет неопределенным.

вопрос связан с моим предыдущимпроблема [https://stackoverflow.com/questions/5294660/explain-working-of-this-c-program], Ответ, который я получил, был«Это неопределенное поведение». Пожалуйста, кто-нибудь объяснить: Что такое неопределенное ...