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.
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
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
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
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
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
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
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):
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*
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
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
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
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
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
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
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
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
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
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
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,
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
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
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;
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
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
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
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ß
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
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
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
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
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.
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,
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 >
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
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
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;
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
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:
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
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
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
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
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
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 <<
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*