Ein ganzzahliger Überlauf tritt auf, wenn das Ergebnis einer Operation größer ist als der Maximalwert, der durch den zugrunde liegenden ganzzahligen Typ dargestellt werden kann.
На этот вопрос есть ответы на Stapelüberlauf на русском : Можно ли на языках C / C ++ определить целочисленное ее Ich habe ein Programm in C ++ geschrieben, um alle Lösungen von a b = c zu finden , wobei a , b und c alle Ziffern 0-9 genau …
-2147483648 ist die kleinste Ganzzahl für den Ganzzahltyp mit 32 Bit, aber es scheint, dass sie im if(...)Satz überläuft : if (-2147483648 > 0) std::cout << "true"; else std::cout << "false"; Dies wird truein meinen Tests gedruckt . Wenn wir jedoch -2147483648 in eine Ganzzahl umwandeln, ist das Ergebnis anders: …
Der vorzeichenlose Ganzzahlüberlauf ist sowohl im C- als auch im C ++ - Standard gut definiert. Zum Beispiel heißt es im C99-Standard ( §6.2.5/9) Eine Berechnung mit vorzeichenlosen Operanden kann niemals überlaufen, da ein Ergebnis, das nicht durch den resultierenden vorzeichenlosen Ganzzahltyp dargestellt werden kann, modulo um die Zahl reduziert …
Ich muss einen Ausdruck berechnen, der aussieht wie : A*B - C*D, wo ihre Typen sind: signed long long int A, B, C, D; Jede Zahl kann wirklich groß sein (ohne ihren Typ zu überlaufen). Während A*Bdies zu einem Überlauf führen kann, A*B - C*Dkann der Ausdruck gleichzeitig sehr klein …
Der folgende Codeblock gibt die Ausgabe als 0 an. public class HelloWorld{ public static void main(String []args){ int product = 1; for (int i = 10; i <= 99; i++) { product *= i; } System.out.println(product); } } Kann mir bitte jemand erklären, warum das passiert?
Das Hinzufügen von zwei 32-Bit-Ganzzahlen kann zu einem Ganzzahlüberlauf führen: uint64_t u64_z = u32_x + u32_y; Dieser Überlauf kann vermieden werden, wenn eine der 32-Bit-Ganzzahlen zuerst umgewandelt oder zu einer 64-Bit-Ganzzahl hinzugefügt wird. uint64_t u64_z = u32_x + u64_a + u32_y; Wenn der Compiler jedoch beschließt, den Zusatz neu zu …
Ich möchte den Sonderfall behandeln, bei dem das Multiplizieren zweier Zahlen einen Überlauf verursacht. Der Code sieht ungefähr so aus: int a = 20; long b = 30; // if a or b are big enough, this result will silently overflow long c = a * b; Das ist eine …
Ich möchte eine Funktion definieren, die ein unsigned intas-Argument verwendet und ein intkongruentes Modulo UINT_MAX + 1 an das Argument zurückgibt. Ein erster Versuch könnte so aussehen: int unsigned_to_signed(unsigned n) { return static_cast<int>(n); } Wie jeder Sprachanwalt weiß, ist das Casting von nicht signiert zu signiert für Werte größer als …
Dies ist ein Beispiel zur Veranschaulichung meiner Frage, die einen viel komplizierteren Code enthält, den ich hier nicht posten kann. #include <stdio.h> int main() { int a = 0; for (int i = 0; i < 3; i++) { printf("Hello\n"); a = a + 1000000000; } } Dieses Programm enthält …
Wie wir wissen, ist ein vorzeichenbehafteter Ganzzahlüberlauf ein undefiniertes Verhalten . In der C ++ 11- cstdintDokumentation gibt es jedoch etwas Interessantes : Ganzzahliger Typ mit Vorzeichen mit einer Breite von genau 8, 16, 32 bzw. 64 Bit ohne Auffüllbits und Verwendung des Zweierkomplements für negative Werte (nur bereitgestellt, wenn …
Ich bin auf das folgende C ++ - Programm ( Quelle ) gestoßen : #include <iostream> int main() { for (int i = 0; i < 300; i++) std::cout << i << " " << i * 12345678 << std::endl; } Es sieht aus wie ein einfaches Programm und gibt …
Auf den ersten Blick scheint diese Frage ein Duplikat von Wie erkennt man einen Ganzzahlüberlauf? es ist jedoch tatsächlich deutlich anders. Ich habe festgestellt, dass das Erkennen eines vorzeichenlosen Ganzzahlüberlaufs zwar ziemlich trivial ist, das Erkennen eines vorzeichenbehafteten Überlaufs in C / C ++ jedoch schwieriger ist, als die meisten …
Ich habe festgestellt, dass die java.lang.IntegerImplementierung der compareToMethode wie folgt aussieht: public int compareTo(Integer anotherInteger) { int thisVal = this.value; int anotherVal = anotherInteger.value; return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1)); } Die Frage ist, warum Vergleich statt Subtraktion verwendet wird: return thisVal - anotherVal;
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.