Tag: undefined-behavior

Das unvorhersehbare Ergebnis der Kompilierung oder Ausführung von einem Programm, das bricht die Regeln der Sprache, die weder compiler, interpreter noch runtime-system geltend zu machen.

Ist die Ausgabe von printf ("%d %d", c++, c); auch undefiniert?

Anzahl der Antworten 6 Antworten
Kurzem stieß ich auf ein post Was ist die richtige Antwort für cout << c++ << c;? und Frage mich, ob die Ausgabe von int c = 0; printf ("%d %d", c++, c); ist auch undefiniert?? Studierte

(Warum) ist die Verwendung einer nicht initialisierten Variablen-Undefinierte Verhalten?

Anzahl der Antworten 7 Antworten
Wenn ich: unsigned int x; x -= x; es ist klar, dass x sollte null nach diesem Ausdruck, aber überall sehe ich, Sie sagen die Verhalten dieser code ist undefiniert, nicht bloß der Wert der x (bis

Wann ist casting zwischen Zeiger-Typen nicht Undefiniertes Verhalten in C?

Anzahl der Antworten 5 Antworten
Als Neuling in der C, ich bin verwirrt, etwa beim casting eines Zeigers ist eigentlich OK. So wie ich das verstehe, kann man so ziemlich jedem cast Zeiger-Typ auf einen anderen Typ, und der compiler lässt Sie

Ist das "struct " hack" technisch nicht definiertes Verhalten?

Anzahl der Antworten 8 Antworten
Was ich bin das Fragen ist die bekannte "Letzte member einer struct-variable Länge" trick. Es geht so etwas wie dieses: struct T { int len; char s[1]; }; struct T *p = malloc(sizeof(struct T) + 100); p->len

gcc-4.9 Undefined Behavior Sanitizer

Anzahl der Antworten 2 Antworten
In gcc-4.9 änderungen es sagt: UndefinedBehaviorSanitizer (ubsan), ein schnell zu undefiniertem Verhalten Detektor, wurde Hinzugefügt und aktiviert werden können über -fsanitize=undefined. Verschiedene Berechnungen werden instrumentiert, um erkennen zu undefiniertem Verhalten bei der Laufzeit. UndefinedBehaviorSanitizer ist derzeit verfügbar

Ist Links und rechts verschieben negativen Ganzzahlen definiert Verhalten?

Anzahl der Antworten 3 Antworten
Weiß ich, Recht Verschiebung einen negativen signed-Typ hängt von der Implementierung, aber was ist, wenn ich führen eine Verschiebung nach Links? Zum Beispiel: int i = -1; i << 1; Ist dieser gut definiert? Ich denke, dass

Wie undefiniert sind, __builtin_ctz(0) oder __builtin_clz(0)?

Anzahl der Antworten 2 Antworten
Hintergrund Für eine lange Zeit, gcc zur Verfügung gestellt hat eine Reihe von builtin-bit-twiddling-Funktionen, insbesondere die Anzahl der Leerzeichen am Anfang und Ende 0-bits (auch für long unsigned und long long unsigned, die Suffixe l und ll):

Wann kommt den Aufruf einer member-Funktion auf eine null-Instanz nicht definiertes Verhalten zur Folge?

Anzahl der Antworten 2 Antworten
Betrachten Sie den folgenden code: #include <iostream> struct foo { //(a): void bar() { std::cout << "gman was here" << std::endl; } //(b): void baz() { x = 5; } int x; }; int main() { foo*

Warum sind diese Konstrukte mit Hilfe von pre-und post-Inkrement Undefiniertes Verhalten?

Anzahl der Antworten 14 Antworten
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); //3 i = 1; i = (i++); printf("%d\n", i); //2 Should be 1, no ? volatile int u = 0; u

Eine C++ - Implementierung erkennt, dass Undefiniertes Verhalten?

Anzahl der Antworten 10 Antworten
Einer großen Anzahl von Operationen in C++ nicht definiertes Verhalten zur Folge, wo die Skillung ist komplett stumm über das, was das Programm Verhalten sollte und können für alles möglich. Weil dieses, es gibt alle Arten von

Erkennen signed-überlauf in C/C++

Anzahl der Antworten 12 Antworten
Auf den ersten Blick, diese Frage mag wie eine Kopie der Wie zu erkennen integer-überlauf?, aber es ist tatsächlich deutlich anders. Habe ich gefunden, dass während der Erkennung eine vorzeichenlose integer-überlauf ist ziemlich trivial, das erkennen einer

Warum sind diese Konstrukte mit Hilfe von pre-und post-Inkrement Undefiniertes Verhalten?

Anzahl der Antworten 14 Antworten
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); //3 i = 1; i = (i++); printf("%d\n", i); //2 Should be 1, no ? volatile int u = 0; u

Können wir den Wert ändern, der ein Objekt definiert mit const über Zeiger?

Anzahl der Antworten 10 Antworten
#include <stdio.h> int main() { const int a = 12; int *p; p = &a; *p = 70; } Wird es funktionieren? Viele Duplikate, z.B. Konstanten und Zeiger in C Vielleicht können Sie versuchen, verwenden Sie einen

Warum sind diese Konstrukte mit Hilfe von pre-und post-Inkrement Undefiniertes Verhalten?

Anzahl der Antworten 14 Antworten
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); //3 i = 1; i = (i++); printf("%d\n", i); //2 Should be 1, no ? volatile int u = 0; u

Warum sind diese Konstrukte mit Hilfe von pre-und post-Inkrement Undefiniertes Verhalten?

Anzahl der Antworten 14 Antworten
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); //3 i = 1; i = (i++); printf("%d\n", i); //2 Should be 1, no ? volatile int u = 0; u

Zugriff auf inaktiv union-Mitglied und Undefiniertes Verhalten?

Anzahl der Antworten 5 Antworten
War ich unter dem Eindruck, dass der Zugriff auf eine union Mitglied anderer als der Letzte gesetzt wird UB, aber ich kann nicht scheinen zu finden, eine solide Referenz (eine andere als Antworten zu fordern, es ist

Undefiniertes Verhalten und Sequenz-Punkte

Anzahl der Antworten 5 Antworten
Was sind "sequence points"? Was ist die Beziehung zwischen dem undefinierten Verhalten und Sequenz-Punkte? Verwende ich oft komische und komplizierte Ausdrücke wie a[++i] = i;, um mich besser zu fühlen. Warum sollte ich aufhören? Wenn Sie dies

Counter exit code 139 beim laufen, aber gdb machen es durch

Anzahl der Antworten 1 Antworten
Meine Frage klingt speziell, aber ich bezweifle es immer noch sein kann, eine C++ - debug-Ausgabe. Ich bin mit omnet++ zu simulieren wireless-Netzwerk. omnet++ selbst ist ein c++ - Programm. Ich traf ein sonderbarer Phänomene, wenn ich

C++ - löschen - Er löscht meine Objekte aber ich kann immer noch auf die Daten zugreifen?

Anzahl der Antworten 13 Antworten
Ich geschrieben habe, eine einfache, Arbeits-tetris-Spiel, wobei jeder block als eine Instanz einer Klasse singleblock. class SingleBlock { public: SingleBlock(int, int); ~SingleBlock(); int x; int y; SingleBlock *next; }; class MultiBlock { public: MultiBlock(int, int); SingleBlock *c,

Android-debugger blendet die lokale variable

Anzahl der Antworten 6 Antworten
Ich habe ein komisches Verhalten mit den Android-debugger beim ausführen der folgenden code. Die variable Wert verschwindet nur, nachdem er initialisiert wurde, indem Sie das widget. Ich zog es an, um Uhren, sondern es sagt "Cannot find

Benannte Element mit dem Namen Liste - garantiert zum Anhängen an Ende der Liste?

Anzahl der Antworten 2 Antworten
Beim hinzufügen eines benannten Elements zu einer Liste, ist es garantiert, dass der Eintrag an das Ende der Liste? In der Praxis ist es der Fall zu sein scheint, aber nicht sicher, ob dies ist eine gefährliche

Undefiniertes Verhalten und Sequenz-Punkte reloaded

Anzahl der Antworten 5 Antworten
Betrachten dieses Thema eine Fortsetzung von dem folgenden Thema: Letzten Ausgabe Undefiniertes Verhalten und Sequenz-Punkte Lasst uns das dieses lustig und gewundenen Ausdruck (die kursiven Sätze stammen aus dem oben genannten Thema *smile* ): i += ++i;

Ist vorzeichenbehafteter Integerüberlauf immer noch undefiniertes Verhalten in C ++?

Anzahl der Antworten 3 Antworten
Wie wir wissen, Ganzzahl-überlauf ist ein nicht festgelegtes Verhalten. Aber es gibt etwas Interessantes in C++11 cstdint Dokumentation: vorzeichenbehaftete integer-Typ mit einer Breite von genau 8, 16, 32 und 64 bit jeweils mit no padding bits und

Warum ruft die linke Verschiebungsoperation Undefined Behavior auf, wenn der linke Operand einen negativen Wert hat?

Anzahl der Antworten 8 Antworten
In C bitweisen Verschiebung nach Links ruft Undefiniertes Verhalten, wenn die linke Seite operand hat negativen Wert. Relevantes Zitat aus der ISO C99 (6.5.7/4) Das Ergebnis von E1 << E2 E1 Links verschoben E2 bit-Positionen; freigewordenen bits

Warum ist vorzeichenloser Integer-Überlauf definiertes Verhalten, aber vorzeichenbehafteter Integer-Überlauf nicht?

Anzahl der Antworten 5 Antworten
Unsigned integer-überlauf ist genau definiert und von den C-und C++ - standards. Zum Beispiel, die C99-standard (§6.2.5/9) Staaten Berechnungen mit vorzeichenlosen Operanden können nie überlaufen, da ein Ergebnis, das nicht dargestellt werden kann durch die resultierende Ganzzahl-Typ

Warum wird diese Schleife bei einigen Plattformen und nicht bei anderen ausgeführt?

Anzahl der Antworten 14 Antworten
Ich habe vor kurzem angefangen C zu lernen und ich bin eine Klasse unter mit C als Subjekt. Ich bin derzeit rund um das Spiel mit loops und ich bin in einige merkwürdige Verhaltensweisen, die ich weiß

Können wir den Wert eines mit const through pointers definierten Objekts ändern?

Anzahl der Antworten 10 Antworten
#include <stdio.h> int main() { const int a = 12; int *p; p = &a; *p = 70; } Wird es funktionieren? InformationsquelleAutor der Frage Shweta | 2010-09-27

Warum sind diese Konstrukte (mit ++) undefiniertes Verhalten in C?

Anzahl der Antworten 13 Antworten
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); //3 i = 1; i = (i++); printf("%d\n", i); //2 Should be 1, no ? volatile int u = 0; u

Realloc auf NULL-Wert (oder undefined) Zeiger

Anzahl der Antworten 3 Antworten
Ich war Lesung über realloc und verwirrt über einen Punkt angesprochen. Betrachten Sie den folgenden code: #include <stdio.h> #include <stdlib.h> int main () { int* ptr = NULL; ptr = realloc(ptr, 10*sizeof(int)); return 0; } Besteht die

Überschriebenen Überlauf in C / C ++ erkennen

Anzahl der Antworten 12 Antworten
Auf den ersten Blick, diese Frage mag wie eine Kopie der Wie zu erkennen integer-überlauf?aber es ist tatsächlich deutlich anders. Habe ich gefunden, dass während der Erkennung eine vorzeichenlose integer-überlauf ist ziemlich trivial, das erkennen einer unterzeichnet

Division durch Null: Undefiniertes Verhalten oder Implementierung in C und / oder C ++ definiert?

Anzahl der Antworten 8 Antworten
Bezüglich der division durch null, die standards sagen: C99 6.5.5p5 - das Ergebnis Der /- operator ist der quotient aus der division des ersten Operanden durch den zweiten; das Ergebnis des % - operators ist der Rest.

Operation auf ... kann undefiniert sein?

Anzahl der Antworten 3 Antworten
Ich habe den folgenden code FRAME frameArray[5][10]; //Create the array of frames int trackBufferFull[5] = {0, 0, 0, 0, 0};//Keeps track of how full the buffer for each node is int trackFront[5] = {0, 0, 0, 0,

Warum verursacht Integer-Überlauf auf x86 mit GCC eine Endlosschleife?

Anzahl der Antworten 6 Antworten
Der folgende code wird in einer Endlosschleife auf GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i >

Nicht definierte Verhaltens- und Sequenzpunkte

Anzahl der Antworten 4 Antworten
Was sind "sequence points"? Was ist die Beziehung zwischen dem undefinierten Verhalten und Sequenz-Punkte? Verwende ich oft komische und komplizierte Ausdrücke wie a[++i] = i;um mich besser zu fühlen. Warum sollte ich aufhören? Wenn Sie dies gelesen

Undefiniertes, nicht spezifiziertes und implementierungsdefiniertes Verhalten

Anzahl der Antworten 9 Antworten
Was ist der Unterschied zwischen unbestimmten, nicht spezifiziert und in der Implementierung definierte Verhalten in C und C++? InformationsquelleAutor der Frage Zolomon | 2010-03-07

Zu welchem ​​Zeitpunkt in der Schleife wird Integerüberlauf zu undefiniertem Verhalten?

Anzahl der Antworten 11 Antworten
Dies ist ein Beispiel zur Veranschaulichung meiner Frage, die beinhaltet einige sehr komplizierter code, das kann ich nicht hier posten. #include <stdio.h> int main() { int a = 0; for (int i = 0; i < 3;

Was ist die strenge Aliasing-Regel?

Anzahl der Antworten 9 Antworten
Wenn Sie Fragen über gemeinsame Undefiniertes Verhalten in CSeelen, die mehr erleuchtet, als ich verwies auf die strengen aliasing-Regel. Was reden Sie? InformationsquelleAutor der Frage Benoit | 2008-09-19

const Mitglied und Zuweisungsoperator. Wie vermeidet man das undefinierte Verhalten?

Anzahl der Antworten 6 Antworten
Ich beantwortet die Frage nach std::vector-Objekte und const-correctness und bekam unverdient downvote und einen Kommentar zu undefiniertem Verhalten. Ich bin nicht einverstanden, und deshalb habe ich eine Frage. Betrachten die Klasse als const-member: class A { public:

Was sind all die üblichen undefinierten Verhaltensweisen, über die ein C ++ - Programmierer Bescheid wissen sollte?

Anzahl der Antworten 11 Antworten
Welche alle die gemeinsame undefinierten Verhaltensweisen, die ein C++ - Programmierer wissen sollte? Sagen, wie: a[i] = i++; InformationsquelleAutor der Frage yesraaj | 2008-12-15

Ist die nichtinitialisierte lokale Variable der schnellste Zufallsgenerator?

Anzahl der Antworten 22 Antworten
Kenne ich die nicht initialisierte lokale variable ist undefined behaviour(UB), und auch der Wert möglicherweise trap-Repräsentationen, die möglicherweise Auswirkungen auf den weiteren Betrieb, aber manchmal möchte ich die Zufallszahl nur zur visuellen Darstellung und nicht mehr zu

Warum ist f (i = -1, i = -1) undefiniertes Verhalten?

Anzahl der Antworten 11 Antworten
Ich war Lesung über Reihenfolge der Auswertung Verletzungenund Sie geben ein Beispiel, das verwirrt mich. 1) Wenn eine Nebenwirkung auf ein Skalares Objekt ist un-sequenziert relativ zu einer anderen Seite Effekt auf die gleichen Skalare Objekt, das

Zugriff auf inaktives Mitglied und nicht definiertes Verhalten?

Anzahl der Antworten 5 Antworten
War ich unter dem Eindruck, dass der Zugriff auf eine union Mitglied anderer als der Letzte gesetzt wird UB, aber ich kann nicht scheinen zu finden, eine solide Referenz (eine andere als Antworten zu fordern, es ist

Welchen spezifischen Hashalgorithmus gibt MessageDigest.getInstance ("SHA") zurück?

Anzahl der Antworten 2 Antworten
MessageDigest.getInstance("SHA") scheint zu funktionieren und gibt mir ein MessageDigest, aber ich kann nicht sagen, welchen Algorithmus es mir auch. Ist es SHA-1 oder SHA-0 oder ..? Ich bin nicht daran interessiert, was passiert auf meinem Rechner. Ich

Warum erzeugt diese Schleife "Warnung: Iteration 3u ruft undefiniertes Verhalten auf" und gibt mehr als 4 Zeilen aus?

Anzahl der Antworten 5 Antworten
Kompilieren: #include <iostream> int main() { for (int i = 0; i < 4; ++i) std::cout << i*1000000000 << std::endl; } sowie gcc erzeugt folgende Warnung: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations] std::cout << i*1000000000 <<

Wann führt das Aufrufen einer Memberfunktion für eine Nullinstanz zu einem nicht definierten Verhalten?

Anzahl der Antworten 2 Antworten
Betrachten Sie den folgenden code: #include <iostream> struct foo { //(a): void bar() { std::cout << "gman was here" << std::endl; } //(b): void baz() { x = 5; } int x; }; int main() { foo*