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

11

11.10.2008, 11:25

David_pb
Frag ich mich auch, ich halte das eher für "persönliche Schönheitsinteressen" ob man nun mehr auf NAND- oder AND-Prüfung steht.

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

12

11.10.2008, 11:31

Weil true als !=0 definiert ist, unter C++ aber mehr oder weniger ein Define für 1 ist (+Typensicherheit).

C-/C++-Quelltext

1
2
3
bool b;
*((char*)&b) = 2;
cout << (b==true ? "Schön wärs" : "Geht leider nicht") << endl;


Der Code wird eher ne pessimistische Aussage ausgeben:)
Zugegebenermaßen versucht die Sprache einen davon abzuhalten, dem Typ bool einen anderen Wert als 0 und 1 zuzuweisen, es kann aber trotzdem passieren..

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

13

12.10.2008, 17:49

Ähm mein Wissen ist auf dem Gebiet nicht besonders toll, aber im Prinzip hast du das C++ durch einen C-Cast ausgehebelt. Sprich wenn man sich an C++ Mittel halten würde, müsste man schon ein reinterpreter nehmen und wenn man das tut, sollte man wissen, was man tut.
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.

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

14

12.10.2008, 18:20

Hi,
okay, hier ein etwas deutlicheres Beispiel in reinem C++:

C-/C++-Quelltext

1
2
3
4
    if(2 == true)
        std::cout << "das hier wäre eigentlich richtig" << std::endl;
    else
        std::cout << "aber das hier wird ausgegeben" << std::endl;


Der Ms Compiler wird in dem Code zurecht eine Warnung ausgeben, aber das hat nichts mit der Sprache zu tun (leider) und der Compiler kann auch nicht in allen Situationen warnen.

Mein Punkt ist ja auch nur, dass man nicht mit true vergleichen sollte. Das machen ja auch sowieso eigentlich nur Anfänger und es sieht auch besser aus, finde ich, wenn man es nicht macht.:)

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

15

12.10.2008, 23:49

Zitat von »"Helmut"«

Hi,
okay, hier ein etwas deutlicheres Beispiel in reinem C++:

C-/C++-Quelltext

1
2
3
4
    if(2 == true)
        std::cout << "das hier wäre eigentlich richtig" << std::endl;
    else
        std::cout << "aber das hier wird ausgegeben" << std::endl;


Der Ms Compiler wird in dem Code zurecht eine Warnung ausgeben, aber das hat nichts mit der Sprache zu tun (leider) und der Compiler kann auch nicht in allen Situationen warnen.

Mein Punkt ist ja auch nur, dass man nicht mit true vergleichen sollte. Das machen ja auch sowieso eigentlich nur Anfänger und es sieht auch besser aus, finde ich, wenn man es nicht macht.:)

Ciao
ich finde es sieht besser aus, wenn man einfach den vergleich mit true weglässt :P

16

13.10.2008, 17:36

Zitat von »"Genion"«

ich finde es sieht besser aus, wenn man einfach den vergleich mit true weglässt :P

Aber genau das sagt Helmut doch auch oO. Außerdem erwähnt er noch, warum es ohne ==true nicht nur schöner sondern auch eher dem erwarteten Verhalten entspricht.
Lieber dumm fragen, als dumm bleiben!

17

13.10.2008, 17:56

Zitat von »"Jonathan_Klein"«

Zitat von »"Genion"«

ich finde es sieht besser aus, wenn man einfach den vergleich mit true weglässt :P

Aber genau das sagt Helmut doch auch oO. Außerdem erwähnt er noch, warum es ohne ==true nicht nur schöner sondern auch eher dem erwarteten Verhalten entspricht.
ja.. nur wie oft ist ein bool >1?

18

13.10.2008, 19:43

ich erinnere mich dunkel daran, dass ich mal mit DInput Tasten Abgefragt habe, und das irgendwie nie ging. Weil ich eben ==true getestet habe. Ich hab es damals nicht verstanden, sondern irgendwie anders geschrieben, bis es ging.

Es ist das selbe, weshalb man 0==var und nicht var==0 schreiben sollte, weil wenn man ein = vergißt, kommt bei der ersten Version ein Kompilerfehler. Klar, normalerweise passiert das nie, aber wenn doch, ist der Fehler manchmal schwer zu finden.
Lieber dumm fragen, als dumm bleiben!

19

13.10.2008, 21:25

Zitat von »"Jonathan_Klein"«

Es ist das selbe, weshalb man 0==var und nicht var==0 schreiben sollte, weil wenn man ein = vergißt, kommt bei der ersten Version ein Kompilerfehler. Klar, normalerweise passiert das nie, aber wenn doch, ist der Fehler manchmal schwer zu finden.
Nur wäre es mir das nicht wert, weil 0==var sogar mit Abständen viel zu hässlich aussehen würde. Teilweise kriegt man eine Warnung, und so ein Fehler ist auch nicht soo schwer zu finden. Mit einem Debugger findet man relativ schnell heraus, wo eine Variable ungewollt geändert würde. Und wie gesagt, passiert einem das sowieso nie (ich denke, meistens schaut man sich noch kurz an, was man geschrieben hat)...

Werbeanzeige