Forum: Mikrocontroller und Digitale Elektronik Frage zu Programmierlogik


von Andreas Kaltenegger (Gast)


Lesenswert?

Hallo Leute,

ich habe hier ein Logikproblem. Ich gebe zu...ich bin nicht gerade der 
Cheflogiker...

Ich habe folgende Funktion:

bit ReadASC_Flag(void)
{
  return ASC_Flag;
}


welche mir das ASC_Flag zurückgibt....und diese Funktion:

while(!ReadASC_Flag());
sprintf(cBuffer,"Text: %3.3f",fGetText());
DozPrintZ(3, cBuffer);


Whenn ich nun debugge, sehe ich, daß wenn ASC_Flag=0 ist, daß die 
Bedingung nicht erfüllt ist, und somit das sprintf nicht ausgefürht 
wird.

Irgendwie verstehe ich das nicht. Wenn ASC_Flag=0 ist, müßte die 
Bedinung doch erfüllt sein, weil das "!" den Ausdruck doch negiert !?

Irgendwie check ich das gar nicht und wäre sehr dankbar wenn es mir 
jemand erklären könnte.

DANKE

von Grrrr (Gast)


Lesenswert?

Entferne das Semikolon nach der while-bedingung!
Lies ein C-Buch.

von Andreas Kaltenegger (Gast)


Lesenswert?

Herzlichen Dank für deine Antwort...Ja das sollten wir tun...dann hauen 
wir halt gleich alle Foren zu wenn so eine Frage hier nicht mehr erlaubt 
ist.

von Grrrr (Gast)


Lesenswert?

Andreas Kaltenegger schrieb:
> wenn so eine Frage hier nicht mehr erlaubt
> ist.

Wer sagt das so eine Frage nicht erlaubt ist?

Aber in Deinem Fall machen wir mal eine Ausnahme: Fragen auf deren 
Antwort Du mit ein bisschen Grips und lesen eines C-Buches kommen 
könntest, sind Dir persönlich, Andreas Kaltenegger, in diesem Forum 
künftig verboten.

von Andreas Kaltenegger (Gast)


Lesenswert?

Wer bist du denn, daß du hier Verbote erteilen könntest...HAHA

von Grrrr (Gast)


Lesenswert?

Andreas Kaltenegger schrieb:
> Wer bist du denn, daß du hier Verbote erteilen könntest

Sag' mal, liest Du eigentlich selbst was Du schreibst?

> wenn so eine Frage hier nicht mehr erlaubt
> ist.

Niemand hat Dir solche Fragen verboten.

von Andreas Kaltenegger (Gast)


Lesenswert?

Hast du eigentlich am Karsamstag nichts besseres zu tun als auf Fragen 
anderer nutzlose Kommentare zu spammen ?

Wenn du es weist aber es nicht sagen möchtest (Fräulein...der Andreas 
hat meine Sandburg angepinkelt) dann gib einfach mal Ruhe und freue dich 
doch über deine unendliche Weisheit :)

Ich spam ja andere Beiträge auch nicht zu!

von Grrrr (Gast)


Lesenswert?

Andreas Kaltenegger schrieb:
> Wenn du es weist aber es nicht sagen möchtest

Was an: "Entferne das Semikolon nach der while-bedingung! Lies ein 
C-Buch." hast Du denn nun nicht verstanden?

von Andreas Kaltenegger (Gast)


Lesenswert?

IGNORE

von fa (Gast)


Lesenswert?

Er hat deine frage doch beantwortet...

von Andreas Kaltenegger (Gast)


Lesenswert?

Es geht nicht um das Semikolon fa. Ich weis daß das da nicht hingehört, 
kann es aber als Gast nicht mehr ändern. Es ging um die verkürzte Logik 
innherhalb der Bedingung.

von Grrrr (Gast)


Lesenswert?

Andreas Kaltenegger schrieb:
> Ich weis daß das da nicht hingehört,
> kann es aber als Gast nicht mehr ändern.

Du sollst das Semikolon aus DEINEM QUELLTEXT entfernen, nicht aus Deinem 
Beitrag.

von Andreas Kaltenegger (Gast)


Lesenswert?

Da haben wir aber gelacht :)



Wenn du wirklich so viel Ahnung hättest wie du hier vortäschst und die 
Frage gelesen hättest wäre dir hier was aufgefallen

"Irgendwie verstehe ich das nicht. Wenn ASC_Flag=0 ist, müßte die
Bedinung doch erfüllt sein, weil das "!" den Ausdruck doch negiert !?"

Kannst dir zukunftige Antworten sparen. Ist ja echt schade um den 
Speicherplatz.

von Frank L. (florenzen)


Lesenswert?

Obacht! Vielleicht soll while ja seine einsamen Runden drehen solange 
ReadASC_Flag() mit 0 zurückkommt.

Gruß
f

von Andreas Kaltenegger (Gast)


Lesenswert?

Hi Frank,

danke für die Antwort. while(1==1); wäre somit eine Endlosschleife. Das 
läßt den Code gleich in einem ganz anderen Licht erscheinen :)

Es ging zwar um die Bedinung while(!Ausdruck) was aber anscheinend 
nichts anderes bedeutet als while (Ausdruck!=0).

von Frank L. (florenzen)


Lesenswert?

Andreas Kaltenegger schrieb:

[...]
> "Irgendwie verstehe ich das nicht. Wenn ASC_Flag=0 ist, müßte die
> Bedinung doch erfüllt sein, weil das "!" den Ausdruck doch negiert !?"
[...]

Ist sie ja auch. Solange ASC_Flag==0 dreht die while-Schleife Däumchen. 
Wenn ASC_Flag != 0 wird die SChleife verlassen und der nachfolgende 
Code, der sich außerhalb der Schleife befindet, ausgeführt.


Gruß
f

von Peter D. (peda)


Lesenswert?

Frank Lorenzen schrieb:
> Obacht! Vielleicht soll while ja seine einsamen Runden drehen solange
> ReadASC_Flag() mit 0 zurückkommt.

Das werden wir wohl nie erfahren, weil der OP ja krampfhaft bemüht ist, 
von einem Fettnäpfchen ins nächste zu treten.

Wenn man was falsch kopiert hat, könnte man es einfach nochmal richtig 
posten.
Wenn darauf hin jemand geantwortet hat, besteht keinerlei Grund, ihn zur 
Schnecke zu machen.
Generell macht man keinen zur Sau, wenn eine Antwort nicht zutrifft.


Wobei ich mich frage, wie man etwas falsch kopieren kann.
Schließlich weiß ja jedes Kind, daß man Quelltextfragen nie aus dem Kopf 
nachschreibt, sondern immer per copy&paste einfügt.


Peter

von Frank L. (florenzen)


Lesenswert?

Andreas Kaltenegger schrieb:
> Hi Frank,
>
> danke für die Antwort. while(1==1); wäre somit eine Endlosschleife. Das
> läßt den Code gleich in einem ganz anderen Licht erscheinen :)

So ist es. Es ist eine Endlosschleife mit leerem Rumpf.

> Es ging zwar um die Bedinung while(!Ausdruck) was aber anscheinend
> nichts anderes bedeutet als while (Ausdruck!=0).

(!Ausdruck) bedeutet (Ausdruck == 0)


Gruß
f

von Andreas Kaltenegger (Gast)


Lesenswert?

Wie du vielleicht eben bemerkt hast war nichts falsch kopiert :)

Der Code steht genau so da !

Wer aber dann "Grips" für sich beansprucht und Weise Ratschläge erteilt 
wie grrr ohne das was Frank sagt selbst verstanden zu haben sollte halt 
einfach nicht antowrten.

von Andreas Kaltenegger (Gast)


Lesenswert?

Danke für den Hinweis Frank.

Gott sei Dank daß es noch Leute gibt, die ohne erhobenem Zeigefinger 
weiterhelfen und schon mal C-Bücher gelesen haben in denen das mit dem 
Strichpunkt steht :)

Danke Dir !

von Grrrr (Gast)


Lesenswert?

Andreas Kaltenegger schrieb:
> schon mal C-Bücher gelesen haben in denen das mit dem
> Strichpunkt steht :)

Ja. Und jeder Zusammenhang mit meiner ersten Antwort

Grrrr schrieb:
> Entferne das Semikolon nach der while-bedingung!
> Lies ein C-Buch.

ist rein zufällig. Schon klar.

von Andreas Kaltenegger (Gast)


Lesenswert?

Schlaf schön :)

von Rene K. (draconix)


Lesenswert?

Andreas Kaltenegger schrieb:
> Strichpunkt steht :)

Nicht im C Buch aber dafür im Duden: Ausrufezeichen :P :D

> Aus|ru|fe|zei|chen, das: Satzzeichen, das nach Ausrufe-, Wunsch- u.
> Aufforderungssätzen sowie nach Ausrufewörtern steht.

Auch wenn manche hier im Forum denken sie wären Götter mit Kitteln, 
rechtfertigt das noch lange nicht deinen Aggressiven Umgangston Andreas. 
Du hättest Grrrr doch auf den von dir, nunja, doch eher untypisches 
Schleifenverhalten hinweisen können. Da muß man nicht gleich mit einem 
Paket Feindseligkeit losstürmen.

Denn so wie man in den Wald hineinruft, ruft es immer wieder her raus!

von Andreas Kaltenegger (Gast)


Lesenswert?

Hallo Rene,

daß das mit dem Strichpunkt so geht wie es geht wurde mir erst durch den 
Hinweis von Frank klar !!!

Eigentlich ging es mir von Anfang an um den Ausdruck while(!Bedingung) 
auf was Herr grrr aber niemals einging, um seine Dampfblasen ablassen zu 
können.

Bei sowas werd ich stocksauer. Man schaue sich einfach mal seinen 
zweiten Kommentar an. Wenn sich nun auch noch herausstellt (ich 
zumindest lerne noch gerne etwas dazu) daß das durchaus Sinn macht, 
kommt dieser Kommentar echt witzig daher :)

von SCNR (Gast)


Lesenswert?

> daß das mit dem Strichpunkt so geht wie es geht wurde mir erst durch den
> Hinweis von Frank klar !!!

Ich sach jetzt nich "Hätteste mal ein C-Buch gelesen, weil da steht das 
im ersten Kapitel 'Syntax' drin".

SCNR

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.