Вопросы по теме 'undefined-behavior'

Вопрос о объединении в C - хранить как один тип и читать как другой - это реализация?
Я читал о объединении в C от K&R, насколько я понял, одна переменная в объединении может содержать любой из нескольких типов, и если что-то хранится как один тип и извлекается как другой, результат определяется исключительно реализацией. Теперь...
10079 просмотров
schedule 23.11.2021

Как определить неопределенное поведение
Есть ли способ узнать, имеет ли ваша программа неопределенное поведение на C ++ (или даже C), не считая запоминания всей спецификации? Причина, по которой я спрашиваю, заключается в том, что я заметил много случаев, когда программы работают в...
2465 просмотров
schedule 25.09.2021

Почему этот оператор не работает в java x ^ = y ^ = x ^ = y;
int x=1; int y=2; x ^= y ^= x ^= y; Я ожидаю, что значения будут поменяны местами, но это дает x = 0 и y = 1. когда я попробовал на языке C, он дает правильный результат.
3112 просмотров
schedule 28.09.2021

почему результаты различаются в зависимости от компилятора (gcc и turboC)
Возможный дубликат: Это неопределенное поведение C? #include<stdio.h> int main() { int a=5; printf("%d %d %d",a++,a++,++a); return 0; } Вывод: В gcc: 7 6 8 В TURBO C: 7 6 6
168 просмотров
schedule 09.10.2021

(Почему) использует неопределенное поведение неинициализированной переменной?
Если у меня есть: unsigned int x; x -= x; ясно, что x должен быть нулевым после этого выражения, но куда бы я ни посмотрел, они говорят, что поведение этого кода не определено, а не просто значение x (до вычитание). Два вопроса:...
13574 просмотров
schedule 14.11.2021

Деструктор C ++ и выделение памяти, а также неопределенное поведение
Во-первых: я знаю, что если деструктор объекта выкидывает, на поведение приложения нельзя рассчитывать ... Вопрос в проблемах с памятью. Итак, теперь, когда это ясно: Смотрите приложение: #include <stdlib.h> #include <iostream>...
131 просмотров

_Прагма и подстановка макросов
Реализуя свой собственный компилятор C11, я пытаюсь понять, как именно обрабатывать ключевое слово / оператор _Pragma . C11 §6.10.9 описывает _Pragma как оператор, поэтому кажется возможным переопределить его с помощью макросов, то есть #define...
3213 просмотров
schedule 28.09.2021

Разблокировка уже разблокированной темы
В уже запущенном старом коде я нашел место, где пытались разблокировать уже разблокированный мьютекс. Я понимаю, что разблокировка уже разблокированного мьютекса приведет к неопределенному поведению. Но мои сомнения Могу ли я предсказать...
464 просмотров

Поведение неинициализированной переменной в C ++
Себя проверил, такую ​​прогу написал int main() { int i; cout << i; return 0; } Я запускал программу несколько раз, и результат был все время один и тот же, ноль. Я пробовал это на C, и результат был таким же. Но в моем учебнике...
15257 просмотров
schedule 30.10.2021

Переменные-указатели - это просто целые числа с некоторыми операторами или они являются символическими?
РЕДАКТИРОВАТЬ: исходный выбор слова сбивал с толку. Термин «символический» намного лучше оригинального («мистического»). При обсуждении моего предыдущего вопроса о C ++ мне сказали, что указатели " простой тип значения, очень похожий на целое...
504 просмотров

Является ли этот код четко определенным, независимо от того, есть ли копия?
Рассмотрим этот код: #include <iostream> struct Test { int x; int y; }; Test func(const Test& in) { Test out; out.x=in.y; out.y=in.x; return out; } int main() { Test test{1,2}; std::cout << "x: "...
424 просмотров
schedule 02.11.2021

Почему компилятор не предупреждает вас о возможном неопределенном поведении?
Я читал знаменитый Неопределенное поведение может вызывать путешествия во времени post и заметил эту часть: Прежде всего, вы могли бы заметить ошибку «не за один» в цикле управления. В результате функция считывает один за концом массива...
769 просмотров
schedule 13.11.2021

reinterpret_cast, char * и неопределенное поведение
В каких случаях reinterpret_cast выполнение char* (или char[N] ) является неопределенным поведением, а когда это определенное поведение? Какое эмпирическое правило я должен использовать, чтобы ответить на этот вопрос? Как мы узнали из...
2845 просмотров

clang - Неопределенное поведение при перераспределении псевдонимов
Это баг с лязгом? #include <stdlib.h> long func(int *p, long size) { int *q = (int*)realloc(p,size); if (p == q) { *p = 1; *q = 2; return *p + *q; } return 0; } func () возвращает 3, когда realloc ничего не...
44 просмотров
schedule 15.11.2021

От производного класса memcpy к базовому классу, почему до сих пор вызывается функция базового класса
Я читаю Изнутри объектной модели C ++ . В разделе 1.3 Итак, почему это так, учитывая Bear b; ZooAnimal za = b; // ZooAnimal::rotate() invoked za.rotate(); вызываемый экземпляр rotate () является экземпляром ZooAnimal, а не...
611 просмотров

Как происходит запись непечатаемого символа в C / C ++?
Является ли поведение записи непечатаемого символа неопределенным или определенным реализацией, если символ записывается через _1 _ / _ 2_? Я смущен, потому что слова в стандарте C N1570 / 5.2.2 говорят только о семантике отображения для печати...
269 просмотров
schedule 16.10.2021

Строгий псевдоним C ++: разве это не UB из примера MSFT?
На этой странице Что касается определенной структуры Winsock, в примере, похоже, берется адрес структуры и преобразуется полученный указатель в указатель на совершенно другую структуру. SOCKET ListenSocket; struct sockaddr_in saServer; // Bind...
107 просмотров

Почему я не могу присвоить этому элементу массива указателей значение NULL?
Я все еще новичок в программировании на C. Прошу прощения, если такой вопрос уже задавался, я действительно не знал, что именно искать. В качестве упражнения я программирую словарь. На этом этапе упражнения пользователь должен иметь возможность...
114 просмотров
schedule 13.09.2021

Выброс исключения C ++ через вызов функции C
У меня есть три бесплатных функции: F0, F1 и F2. F0 вызывает F1, который, в свою очередь, вызывает F2. F0 и F2 - это функции C ++, где F1 - функция C. F2 предоставляется F1 через: extern "C" Код для каждой из бесплатных функций следующий:...
1206 просмотров
schedule 29.10.2021

Хорошо ли определен доступ к частично назначенному массиву за назначенной частью?
Скажем, у меня есть этот код: void foo() { char s[10]; char v1 = s[0]; // UB char v2 = s[10]; // also UB } void bar() { char s[10]; strcpy(s, "foo"); char v3 = s[3]; // v3 is zero char v4 = s[0]; // v4 is 'f' char v5 = s[4]; //...
146 просмотров