Die Multiplikation von zwei Ganzzahlen in C++

Ich habe eine ziemlich grundlegende Frage, aber ich bin nicht sicher, ob ich das Konzept zu verstehen oder nicht. Nehmen wir an, wir haben:

int a = 1000000;
int b = 1000000;
long long c = a * b;

Wenn ich diesen starte, c zeigt den negativen Wert, also habe ich auch a und b zu long long und dann war alles in Ordnung. Also warum muss ich ändern a und b, wenn Ihre Werte im Bereich von int und Ihrem Produkt zugewiesen ist c (das ist long long)?

Ich bin mit C/C++

  • Die int-Werte werden nicht gefördert, um die lange vor der Multiplikation, bleiben Sie ints und das Produkt als gut. Dann wird das Produkt gegossen, um die lange, aber zu spät, überlauf geschlagen hat. Mit einer von a oder b lange lange sollte so gut funktionieren, wie die anderen würde gefördert werden.
  • Sollten Sie-tag die Programmiersprache, die Sie verwenden dazu führen, dass verschiedene Sprachen einführen, die sich anders Verhalten 😉
  • Je nachdem, welche Maschine und die version von C, Sie sind mit der Größe eines 'int' kann sich ändern, wie gut.
  • Sie sollten es machen, alle offiziellen und Zeug und copy/paste in eine Antwort haben, anstatt es slumming es als Kommentar. 🙂
  • warum nicht ?:-)
  • lange, lange c = ((long long)a*(long long)b);
  • lange, lange c=(long)a*b
  • Ich bevorzuge normalerweise nicht zum hinzufügen von tags im Titel, aber es ist fraglich
  • Dies ist ein Duplikat einer meiner früheren Fragen stackoverflow.com/questions/29579112/...

InformationsquelleAutor essa | 2015-07-27
Schreibe einen Kommentar