Вопросы по теме '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 просмотров
schedule
31.10.2021
_Прагма и подстановка макросов
Реализуя свой собственный компилятор C11, я пытаюсь понять, как именно обрабатывать ключевое слово / оператор _Pragma . C11 §6.10.9 описывает _Pragma как оператор, поэтому кажется возможным переопределить его с помощью макросов, то есть #define...
3213 просмотров
schedule
28.09.2021
Разблокировка уже разблокированной темы
В уже запущенном старом коде я нашел место, где пытались разблокировать уже разблокированный мьютекс.
Я понимаю, что разблокировка уже разблокированного мьютекса приведет к неопределенному поведению.
Но мои сомнения
Могу ли я предсказать...
464 просмотров
schedule
07.09.2021
Поведение неинициализированной переменной в C ++
Себя проверил, такую прогу написал
int main() {
int i;
cout << i;
return 0;
}
Я запускал программу несколько раз, и результат был все время один и тот же, ноль. Я пробовал это на C, и результат был таким же.
Но в моем учебнике...
15257 просмотров
schedule
30.10.2021
Переменные-указатели - это просто целые числа с некоторыми операторами или они являются символическими?
РЕДАКТИРОВАТЬ: исходный выбор слова сбивал с толку. Термин «символический» намного лучше оригинального («мистического»).
При обсуждении моего предыдущего вопроса о C ++ мне сказали, что указатели
" простой тип значения, очень похожий на целое...
504 просмотров
schedule
14.10.2021
Является ли этот код четко определенным, независимо от того, есть ли копия?
Рассмотрим этот код:
#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 просмотров
schedule
31.10.2021
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 просмотров
schedule
09.09.2021
Как происходит запись непечатаемого символа в 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 просмотров
schedule
02.10.2021
Почему я не могу присвоить этому элементу массива указателей значение 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 просмотров
schedule
02.10.2021