INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mein Arduino kann nicht Multiplizieren
29.02.2016, 00:39 (Dieser Beitrag wurde zuletzt bearbeitet: 29.02.2016 00:40 von BennIY.)
Beitrag #1
Mein Arduino kann nicht Multiplizieren
Guten Abend/Nacht,

mein Arduino kann um diese Uhrzeit nicht rechnen, seht selbst:

unsigned long temp1 = 3435 * 298;
Serial.println(temp1);

Für jeden Taschenrechner ist das: 1023630
Mein Arduino sagt, das ergibt: 4294942350

Was ist da los?
Wenn ich das unsigned raus nehme, ist das ergebnis auch negativ.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.02.2016, 07:17
Beitrag #2
RE: Mein Arduino kann nicht Multiplizieren
Moin,
doch auch dein Ardi kann multiplizieren....wenn du ihm das auch richtig sagst was er machen soll...Tongue
Also das Geheimnis liegt daran das beim multiplizieren wie du es angegeben hast der Compiler von Integer Werten ausgeht und somit gibt das natürlich einen Überlauf. Aber das hat der Compiler auch bei dir sicherlich mit dieser Fehlermeldung angezeigt:
Zitat:UnsignedLongMulti.ino: In function 'void loop()':
UnsignedLongMulti.ino:11:30: warning: integer overflow in expression [-Woverflow]

Um dem Compiler anzuzeigen das du Werte im Long Bereich verarbeiten willst dann mußt du ein "L" ans Ende deiner Zahl stellen das dann so aussieht:
Code:
// #### Variablen Deklaration
unsigned long temp1; // = 3435 * 298;
unsigned long wert1 = 3435;
unsigned long wert2 = 298;

void setup() {
Serial.begin(9600);
}

void loop() {
temp1 = 3435L * 298L;
Serial.print("direkt berechnet ");
Serial.println(temp1);

temp1 = wert1 * wert2;
Serial.print("ueber Variablen berechnet ");
Serial.println(temp1);
delay(2000); // damit die Ausgabe nicht so durchrast...
}
...und im Zweiten Block habe ich das nochmal erweitert. Wenn du die Werte schon vorher Variablen zuweist die als Long ausgewiesen sind dann darfst du das "L" da auch weglassen....siehe obigen Code.
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Frage zu STM32F1xx / Was kann ich bei dieser Fehlermeldung machen? Holzwurm56 37 1.375 04.09.2017 14:14
Letzter Beitrag: Holzwurm56
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 317 22.08.2017 15:17
Letzter Beitrag: Tommy56
  Kann man auf den internen Speicher zugreifen? Maxi290997 11 694 18.08.2017 19:51
Letzter Beitrag: hotsystems
  BME280 - Luftdruckoffset nicht einstellbar ? Stargazer 17 975 13.08.2017 15:38
Letzter Beitrag: hotsystems
  Ich komme mit millis nicht weiter !!! Gonmaus 8 721 09.07.2017 21:24
Letzter Beitrag: Tommy56
  WEMOS Motorshield funzt nicht Rumpl-X 8 546 07.06.2017 21:10
Letzter Beitrag: Tommy56
  LCD geht nicht - keine Ahnung warum?? DL1AKP 12 822 15.05.2017 13:17
Letzter Beitrag: DL1AKP
  433mHz Funkmodule senden/empfangen nicht metzgefa 2 714 06.05.2017 13:30
Letzter Beitrag: metzgefa
  Firmata (Daten senden an den Arduino und empfangen vom Arduino) comfan 6 1.012 29.04.2017 14:29
Letzter Beitrag: hotsystems
  SD Karte wird nicht erkannt Maxi290997 6 422 31.03.2017 06:05
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste