Arduino ToInt() - kommt int oder long raus?

Gast #7024090
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()?
Gast #7025950
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.
#7026177
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.
Gast #7026217
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.
Gast #7026235
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.
Gast #7026325
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.
Gast #7026389
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren