Pytania otagowane jako undefined-behavior

Nieprzewidywalny wynik kompilacji lub wykonania programu, który łamie zasady języka, ani kompilator, ani interpreter, ani system wykonawczy nie muszą egzekwować. NIE UŻYWAJ tego znacznika w przypadku pytań dotyczących typu danych lub zwracanej wartości „undefined”. W takich przypadkach należy zamiast tego użyć tagu [undefined].



9
W jaki sposób uzyskałem wartość większą niż 8 bitów z 8-bitowej liczby całkowitej?
Wytropiłem wyjątkowo paskudny błąd ukrywający się za tym małym klejnotem. Zdaję sobie sprawę, że zgodnie ze specyfikacją C ++ przepełnienia ze znakiem są niezdefiniowanym zachowaniem, ale tylko wtedy, gdy przepełnienie występuje, gdy wartość jest rozszerzana do szerokości bitowej sizeof(int). Jak rozumiem, zwiększanie wartości a charnie powinno być nigdy niezdefiniowanym zachowaniem …


2
Używa malloc do niezdefiniowanego zachowania int do C ++ 20
Powiedziano mi, że następujący kod ma niezdefiniowane zachowanie do C ++ 20: int *p = (int*)malloc(sizeof(int)); *p = 10; Czy to prawda? Argumentem było to, że czas życia intobiektu nie jest uruchamiany przed przypisaniem mu wartości ( P0593R6 ). Aby rozwiązać problem, newnależy użyć umieszczenia: int *p = (int*)malloc(sizeof(int)); new …


8
Czy gałęzie z niezdefiniowanym zachowaniem można uznać za nieosiągalne i zoptymalizowane jako martwy kod?
Rozważ następujące stwierdzenie: *((char*)NULL) = 0; //undefined behavior Wyraźnie wywołuje niezdefiniowane zachowanie. Czy istnienie takiej instrukcji w danym programie oznacza, że ​​cały program jest niezdefiniowany, czy też zachowanie staje się niezdefiniowane dopiero, gdy przepływ sterowania osiągnie tę instrukcję? Czy następujący program byłby dobrze zdefiniowany, gdyby użytkownik nigdy nie wprowadził numeru …

10
Dlaczego printf („% f”, 0); dać niezdefiniowane zachowanie?
Wyrok printf("%f\n",0.0f); drukuje 0. Jednak oświadczenie printf("%f\n",0); wypisuje losowe wartości. Zdaję sobie sprawę, że przejawiam jakieś niezdefiniowane zachowanie, ale nie potrafię dokładnie określić dlaczego. Wartość zmiennoprzecinkowa, w której wszystkie bity są równe 0, jest nadal ważna i floatma wartość 0. floati intmają ten sam rozmiar na moim komputerze (jeśli to …


3
Czy legalne jest, aby kod źródłowy zawierający niezdefiniowane zachowanie powodował awarię kompilatora?
Powiedzmy, że zamierzam skompilować słabo napisany kod źródłowy w C ++, który wywołuje niezdefiniowane zachowanie, a zatem (jak mówią) „wszystko może się zdarzyć”. Z punktu widzenia tego, co specyfikacja języka C ++ uważa za dopuszczalne w kompilatorze zgodnym z wymaganiami, robi „cokolwiek” w tym scenariuszu, w tym awarię kompilatora (lub …

5
Niezdefiniowane zachowanie i punkty sekwencji zostały ponownie załadowane
Rozważ ten temat jako kontynuację następującego tematu: Poprzednia rata Niezdefiniowane zachowanie i punkty sekwencji Wróćmy do tego zabawnego i zawiłego wyrażenia (wyrażenia zapisane kursywą pochodzą z powyższego tematu * uśmiech *): i += ++i; Mówimy, że wywołuje to niezdefiniowane zachowanie. Przypuszczam, że kiedy powiem, możemy założyć, że niejawnie typu o …




12
Wykrywanie podpisanego przepełnienia w C / C ++
Na pierwszy rzut oka to pytanie może wydawać się duplikatem pytania Jak wykryć przepełnienie liczb całkowitych? jednak w rzeczywistości jest znacząco inny. Odkryłam, że podczas wykrywania przepełnienia całkowitą bez znaku jest dość trywialne, wykrywanie podpisane przepełnienie w C / C ++ jest rzeczywiście trudniejsze, niż sądzi większość ludzi. Najbardziej oczywistym, …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.