Forum: Mikrocontroller und Digitale Elektronik Arduino ToInt() - kommt int oder long raus?


von fragender (Gast)


Lesenswert?

Holla,

irgendwie komme ich mir dumm vor... aber ich finde die Arduino-Doku hier 
nicht eindeutig.
https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/
Bei ToInt() heißt es:
Description:
Converts a valid String to an integer.

Da heißt es aber auch:
Returns
If no valid conversion could be performed because the String doesn’t 
start with a integer number, a zero is returned. Data type: long.

Was denn jetzt? Kommt da ein Integer raus oder ein Long?
Oder ist das einfach die Arduino-Version von strtol()?

von PittyJ (Gast)


Lesenswert?

Auf der Seite steht aber auch



Returns

If no valid conversion could be performed because the String doesn’t 
start with a integer number, a zero is returned. Data type: long.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Auch long ist ein Integer-Typ.

von Justin S. (Gast)


Lesenswert?

fragender schrieb:
> Kommt da ein Integer raus oder ein Long?

Du meinst "int" oder "long", denn beides sind Integer. Und die Antwort 
hast Du zitiert: Was ist an "Data type: long" denn nicht zu verstehen?

von Der Klaus (Gast)


Lesenswert?

Richtig, auf der Seite steht auch:

Returns

If no valid conversion could be performed because the String doesn’t
start with a integer number, a zero is returned. Data type: long.

Euer Klaus

von df2ds (Gast)


Lesenswert?

Ein Blick in den öffentlichen Sourcecode hilft sofort:

https://github.com/arduino/ArduinoCore-API/blob/master/api/String.h

Da steht
1
long toInt(void) const;

von Oliver S. (oliverso)


Lesenswert?

Yalu X. schrieb:
> Auch long ist ein Integer-Typ.

Und auf Arduino-Plattformen mit 32-Bit Integern sind long und int sogar 
das selbe.

Oliver

von HildeK (Gast)


Lesenswert?

fragender schrieb:
> ... number, a zero is returned. Data type: long.
                                ^
Lies den Satz mit allen Satzzeichen!
Es ist am Schluss noch genau eine Aussage da: Data type: long.

von Oliver S. (oliverso)


Angehängte Dateien:

Lesenswert?

HildeK schrieb:
> Lies den Satz mit allen Satzzeichen!

Eigentlich reicht es, das im Original zu sehen. Da sollten keine Fragen 
mehr offen bleiben.

Oliver

von M. K. (sylaina)


Lesenswert?

df2ds schrieb:
> Ein Blick in den öffentlichen Sourcecode hilft sofort:
>
> https://github.com/arduino/ArduinoCore-API/blob/master/api/String.h
>
> Da steht
>
1
long toInt(void) const;

Ich frage mich auch immer wieder, warum man sich bei solchen Fragen so 
schwer tut, wo doch ein Blick in den Quellcode jeden Zweifel entfernt. 
Ist das bei solchen Fragen einfach zu naheliegend?

von MaWin (Gast)


Lesenswert?

M. K. schrieb:
> Ich frage mich auch immer wieder, warum man sich bei solchen Fragen so
> schwer tut, wo doch ein Blick in den Quellcode jeden Zweifel entfernt.

Tja, unzureichende Dokumentation.

Ist bei Arduino durch die Bank der Fall.

Man bekommt den Eindruck, die Verfasser der Doku haben sich alle 
erdenkliche Mühe gegeben, jedwede konkrete Aussage aus der Doku zu 
entfernen, damit der übliche Arduidiot nicht mit Fakten überfordert 
wird, sondern ahnungslos weiter bastelt bis es halt für ihn irgendwann 
nicht mehr weiter geht.

von EAF (Gast)


Lesenswert?

MaWin schrieb:
> Tja, unzureichende Dokumentation.

Schwachkopf!

In der Doku steht eindeutig long.
Selbst du müsstest das lesen können.

Das Problem fängt halt da an, wenn man nicht weiß, dass auch long, 
unsigned, byte uvw. zu den Integer zählen.

von Cyblord -. (cyblord)


Lesenswert?

EAF schrieb:
> Das Problem fängt halt da an, wenn man nicht weiß, dass auch long,
> unsigned, byte uvw. zu den Integer zählen.

Oder da, wo man noch nicht mal schnell den Funktionskopf anschauen kann, 
bevor man eine Funktion aufruft und man sich unsicher über den 
Rückgabetyp ist.
Das passiert wenn man sein Gehirn dankbar abgegeben hat um es bloß nicht 
benutzen zu müssen und sich bereitwillig in eine völlige Abhängigkeit 
von ein paar Funktionen begibt, die man nicht versteht. Aber schlimmer, 
man versteht nicht mal das System in welchem diese Funktionen 
existieren. Man entwickelt in ewiger Dunkelheit.

: Bearbeitet durch User
von EAF (Gast)


Lesenswert?

Cyblord -. schrieb:
> Oder da, wo man noch nicht mal schnell den Funktionskopf anschauen kann,
> bevor man eine Funktion aufruft und man sich unsicher über den
> Rückgabetyp ist.

Um den Quellcode zu verstehen, sollte man eins der vielen schönen 
dicken(1000+ Seiten) C++ Bücher gelesen haben.

Da muss wohl jeder Arduino Anfänger irgendwann mal durch, wenn er/sie/es 
erfolgreich sein will.

Merke:
Auch du bist nicht mit dem Wissen geboren worden.

von Joachim B. (jar)


Lesenswert?

fragender schrieb:
> Bei ToInt()

wo gibt es das?

Arduino schreibt: toInt() mit kleinem t großem I (Case sensitiv 
beachten)
https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/

im gcc wird atoi genutzt

also frage ich mich ist "ToInt()" eine neue Sub oder nur Schlamperei in 
der Fragestellung?

von MaWin (Gast)


Lesenswert?

EAF schrieb:
> In der Doku steht eindeutig long.
> Selbst du müsstest das lesen können.

Da der TO aber eine Nachfrage hatte, weil es ihm unklar war, zeigt, dass 
die Doku unzureichend war.

Und sie ist es an vielen anderen Stellen ebenso.

Kaum irgendwo geht man auf die von den Funktionen benutzten Ressourcen 
ein (wie Timer), nirgends ist dokumentiert dass LOW 0 und HIGH 1 ist, 
oder dass digitalWrite eben 0/1, LOW/HIGH, false/true akzeptiert.

Für jede Kleinigkeit muss man in den Source gucken. Da hätte man die 
Arduino-Funktionen gleich selbst besser schreiben können.

von EAF (Gast)


Lesenswert?

MaWin schrieb:
> unzureichend

Das gesamte Arduino Geraffel liegt im Quellcode vor.
Alles ist änderbar, auch die Doku und die IDE

Niemand hindert dich daran, deine Verbesserungen dort einzubringen.

Fragen:
Tust du das?
Willst du das überhaupt?

An der Antwort auf die Fragen macht sich fest, ob du konstruktiv 
handelst/denkst, oder nur ein elendiger/nerviger Arduino Basher bist.

Es ist deine Entscheidung.

von Oliver S. (oliverso)


Lesenswert?

MaWin schrieb:
> Da der TO aber eine Nachfrage hatte, weil es ihm unklar war, zeigt, dass
> die Doku unzureichend war.

Nein, in dem Fall saß das Problem mal wieder vor dem Computer. Die Doku 
ist da glasklar. Man muß sie nur bis zum Ende der wenigen Zeilen lesen.

Oliver

von W.S. (Gast)


Lesenswert?

fragender schrieb:
> irgendwie komme ich mir dumm vor...

Das habe ich nicht geschrieben.

Also: die betreffende Funktion erwartet eine Zeichenkette, die den 
Bedingungen für Integer genügt. Also kein Dezimalpunkt/Komma, auch keine 
Darstellung in der Art von 1E9 oder so. Ansonsten liefert sie offenbar 
ein Ergebnis als 'long' und das heißt: JA, es kommt Integer und Long 
dabei heraus. Du bist ja in der C-Welt und da ist 'long' nur ein 
Qalifizierer für Integer. Genau so wie andere Qualifizierer, die es da 
gibt: short, unsigned oder so.

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.