Forum: Mikrocontroller und Digitale Elektronik Warum wird bei diesem Code so gezählt?


von markus (Gast)


Lesenswert?

Hallo Leute,

Warum wird bei diesem Code so gezählt?
VKH1 wird wie erwartet mit 1 addiert, aber VKH2 nicht mit 1 wie 
erwartet, sondern mit 2 addiert?

int8_t VKH1=0, VKH2=0,

if (Byte & (1 << Pos))
   VKH1+=1;
   VKH2+=1;

Kann mich jemand aufklären??

Gruß

von Micha B. (chameo)


Lesenswert?

Es fehlt vielleicht 'ne Klammer?!

if (Byte & (1 << Pos))
{
   VKH1+=1;
   VKH2+=1;
}

von Lötnix (Gast)


Lesenswert?

also wenn nur bei erfüllter if Abfrage gezählt werden soll, fehlen die 
Klammern meiner Meinung nach
if (Byte & (1 << Pos))
   {
   VKH1+=1;
   VKH2+=1;
   }

in Deiner Version wird das erste += nur bei erfüllter if, das zweite 
aber immer ausgeführt.

HTH,
Lötnix

von Michael (Gast)


Lesenswert?

Das erklärt aber nicht, wieso VHK2+ mit 2 addiert wird...

von OliverSo (Gast)


Lesenswert?

>Das erklärt aber nicht, wieso VHK2+ mit 2 addiert wird...

Der Fehler steckt in Zeile 42.
Vielleicht wird er Code obe zweimal durchlaufen, aber nur einmal ist die 
Bedingung wahr?

Fragen über Frage, aber ohne den vollständigen Code ist die Antwort 
immer 42.

Oliver

von Uwe B. (boerge) Benutzerseite


Lesenswert?

Michael wrote:
> Das erklärt aber nicht, wieso VHK2+ mit 2 addiert wird...
>
doch, denn du weist ja nicht, wie der Rest des Programmes (vor und nach 
der if-Abfrage) aussieht...

von Thomas L. (tom)


Lesenswert?

Wer sagt denn dass es das wird?

von Lötnix (Gast)


Lesenswert?

@michael:
> Das erklärt aber nicht, wieso VHK2+ mit 2 addiert wird...

glaubst Du an einen Bug im Compiler im Zusammenhang mit einer 1 bzw. 
einer 2 im Variablennamen?

von Gast (Gast)


Lesenswert?

> Kann mich jemand aufklären??

Das mit den Bienen und Blüten ist so ....

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.