Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

27.09.2005, 18:37

Casting true, false

Hallo!
Ich bin im Buch C++ für Spielprogrammierer bei der Aufgabe 3.8 gelandet. Es geht um das Programmieren eines Countdownzählers in dem man eine Zahl eingiebt die ungerade sein muss und gerade Zahlen bringen das Teil zum stoppen. Da es mir unlogisch war dass gerade die geraden Zahlen gestoppt werden müssen habe ich einfach die ungeraden Zahlen gestoppt.Dass habe ich hinbekommen,doch in der Lösung sah ich

C-/C++-Quelltext

1
if (CountdownStart%2 == false)


und das sah schon ein bischen einfacher aus als ich dass gemacht habe.
wenn ich jetzt das (false) durch ein (true) ersetze stoppt das Programm bei den ungeraden Zahlen, doch dann kommt beim Kompilieren eine Wahrnung. Die frage ist ob ich vieleicht das (true) casten kann, oder ob mann für sowas eine andere Syntax verwendet?

PS: Ich hoffe das Syntax ein anderes Wort für Quelltext ist, ansonsten korigiert mich!

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

27.09.2005, 18:51

Da kann man es auch so machen
für ungerade

C-/C++-Quelltext

1
if(CountdownStart%2)

für gerade

C-/C++-Quelltext

1
if(!(CountdownStart%2))
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Anonymous

unregistriert

3

27.09.2005, 19:40

Eine "Syntax" ist die Beschreibung aller Optionen und Parameter eines Befehls oder Funktion.

Gehe mal in deinem Windows auf :Start-->Ausführen.. und gebe da "Help copy" ein.

Was du jetzt siehst ist die "Syntax" des Befehls "Copy". Aus diesem ganzen ziehts du dann das raus was du brauchst,zb:

copy C:/EineDatei A:

cu

Anonymous

unregistriert

4

27.09.2005, 19:53

Könntest du mir vieleicht erklähren wie das funktioniert?Und vieleicht die Frage beantworten, ob mann ein true casten kann?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

27.09.2005, 20:21

Man kann nur einen Typ casten. Also boolean, integer u.s.w. rue und false sind die zwei Werte die ein Wert boolean annehmen kann. Also weiss keiner was du mit

"kann man ein true casten" meinst

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

6

27.09.2005, 20:30

wozu und was möchtest du casten?
die warnung kommt vermutlich deswegen weil:

C-/C++-Quelltext

1
if (CountdownStart%2 == false)

ein überflüssiger vergleich ist und das gleiche ergebnis auch mit

C-/C++-Quelltext

1
if (CountdownStart%2)

erreicht werden kann.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

27.09.2005, 21:07

Nun formuliere ich es nocheinmal anders :)
true hat den Wert 1
false den Wert 0

Dadruch hat deine if Anweisung mit dem false funktioniert, obwohl es der falsche Vergleichswert ist. Korrekt wäre also:

C-/C++-Quelltext

1
2
if(CountdownStart%2 == 1) 
if(CountdownStart%2 == 0) 


abgekürzt ist es halt diese Fassung:

C-/C++-Quelltext

1
2
if(CountdownStart%2) 
if(!(CountdownStart%2)) 
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Anonymous

unregistriert

8

28.09.2005, 08:59

Okey danke!
Ich habe gedacht dass True und false auch datentypen sind. Habe ich mich wohl getoschen.




C-/C++-Quelltext

1
2
if(CountdownStart%2) 
if(!(CountdownStart%2)) 


Diese wariante sieht wirklich hübsch aus. Ich verstehe nur nicht warum genau klammern und so verwendet werden, aber ich lass dass jetzt mal bei Seite und werde mich mit dem Quelltext im Buch befassen.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

9

28.09.2005, 09:47

true hat alle Werte, ausser 0. Wa Nox ;). False hat nur den Wert 0.

Eine Bedingung ist also wahr, wenn ein Wert ungleich (!=) 0 ausgegeben wurde.

das heisst wenn ich schreibe

C-/C++-Quelltext

1
if(m_bInitialized)


und die Variable m_bInitialized den Wert true hat, ist die Bedinung wahr, sonst nicht. Eine Bedinung kann eigentlich immer nur Wahr oder falsch sein, deshalb ist true und false auch so definiert.

Syntax ist der Aufbau einer Programmiersprache, dazu gehört das was Dave gesagt hat.

Und man kann true und false casten, abder das willst du nicht wissen!

Du willst wissen warum die warnung kommt....
1.) poste mal die Warnung
2.) mach mal ne Klammer um das Countdown%2!

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

28.09.2005, 10:06

koschka lies mal den folgenden Wert aus:

int test = (int) true;

Welchen Wert hat nun test bzw true :P ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige