warum ist das besser?
(vorher hatte ich ja int16_t i)
- - - Aktualisiert - - -
update:
komisch, jetzt läuft es auf dem Due auch mit int16_t wie zuvor im ersten Code....
und auf dem ESP8266 auch ...![]()
hast du noch was anderes abgeändert?
warum ist das besser?
(vorher hatte ich ja int16_t i)
- - - Aktualisiert - - -
update:
komisch, jetzt läuft es auf dem Due auch mit int16_t wie zuvor im ersten Code....
und auf dem ESP8266 auch ...![]()
hast du noch was anderes abgeändert?
Nein, habe ich nicht. Deswegen habe ich das Rot markiert.
"I==0" ist falsch weil "==" ein Vergleichsoperator ist. Bin leider auch schon mindestens einmal drauf reingefallen. Den Typ schreibe ich davor, damit der Compiler weiß, was er genau für eine Variable anlegen soll. Ob das notwendig ist? - Keine Ahnung, schadet aber nicht.
ogottogottogott, dass mir sowas noch passiert ist ...![]()
aber nein, wenn das int i dafür bereits außerhalb deklariert wurde, muss man das nicht unbedingt innen auch noch mal neu für die Schleife lokal als int deklarieren.
Ich habe nur schnell drüber geschaut und das "int i" außen nicht gesehen. Weil Du das wieder mit Deiner Lieblingsmethode gemacht hast: int16_t i;
![]()
Strom fließt auch durch krumme Drähte !
ich meinte das anders: nicht unbedingt dann, wenn man das i außerhalb der Schleife nicht unbedingt für andere Zwecke braucht als nur für einen Schleifenzähler dann und wann. Aber ich verstehe schon, was du meinst:
dass für for(int i....) immer wieder eine neue lokale Schleifenvariable angelegt wird, was ich bei mir allerdings nicht unbedingt brauchte
@moppi: int16_t verwende ich gerne dann, wenn ich vermeiden will, dass bei größeren MCUs der Compiler für ein int 32bit Speicher reserviert, was ansonsten bei 32bit ARM cpus passiert.
Streng genommen sollte für die Schleife eine neue Variable erzeugt werden, die nur innerhalb der Schleife gültig ist. Weiß aber nicht, ob das hier in diesem C-Programmierkram auch so ist. Wenn es keine Warnung vom Compiler gibt, dass >>i<< schon existiert, müsste das schon so sein, ich weiß es hier aber auch nicht genau. Ich programmiere zwar schon 28 Jahre, die ersten 10 bis 20 fast täglich als Hauptbeschäftigung, aber C/C++ und Java zusammengenommen davon nur wenige Monate. In C/C++ habe ich eigentlich nie was gemacht, nur immer versuchsweise, mal ein paar Tage oder eine Woche, hin und wieder. Jetzt für Arduino ist, dass ich es mal intensiver verwende. Deshalb, wenn ich den Code so überfliege, springen mir die Sachen dann nicht sofort ins Auge, weil ich mehr nach "int i=...;" Ausschau halte und da ist es mir nicht aufgefallen.
MfG
Lesezeichen