.| Autor | Beitrag |
|---|---|
|
000 08.07.2002, 09:58 ludi |
hi leute! ich habe ein problem mit dem if-befehl in c. das kanns doch nicht sein, oder? das muss auch einfacher gehen. vielleicht wisst ihr ja was... --diese nachricht besteht aus 100% reseiclelebaren eläktronen und 0% rächdschreibfelern ;) mfg ludi[-][i] |
|
Profil || Suche |
|
001 08.07.2002, 10:13 Tron |
doch, das isses ! vorsicht, hack, da schlecht lesbar; aber 100% ANSI-C++ konform ! if ((int(a == 1) + int(b == 2) + int(c == 64) + int(d == 255)) >= 3) {} das funktioniert, da garantiert ist, dass das ergebnis von boolschen operationen 1 fuer wahr und 0 fuer falsch ist. <neugierde>was gibt das, wenn's fertig ist?</neugierde> --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
002 08.07.2002, 12:42 apfelkorn |
lol, tron is am rumhacken was das zeug hält, aber einfach so eine bool in ein int umzuwandeln, das is schon herb... Ich glaub msvc++ gibt da auch ne warning aus. -- |
|
Profil || Suche |
|
003 08.07.2002, 12:44 WareWolf |
für mich (als nicht c++ Progger) ist aber Tron´s Variante leichter zu lesen als das "Original" Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴ Dieser Beitrag wurde am 08.07.2002 um 12:47 von WareWolf bearbeitet. |
|
Profil || Suche |
|
004 08.07.2002, 12:54 Tron |
herb? das ist absolut legal! msvc++ darf da keine warnung ausgeben, das duerfte hoechstens fuer casts z.b. von long auf char ne warnung geben. btw: die form des orginals nennt man uebrigens disjunktive normalform --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
005 08.07.2002, 14:29 apfelkorn |
oha, lernt man wieder was... -- |
|
Profil || Suche |
|
006 08.07.2002, 20:00 ludi |
@tron: thx, is ne echt intellegente lösung :) <neugierdebefriedugung>ich will meine c/cpp-kenntnisse mal etwas vertiefen, deshalb programmiere ich gerade ein kleines spiel, bei dem man gegen den pc "4 gewinnt" spielen kann. die anweisung nach der ich gefragt habe brauche ich, damit der pc weiß, dass er aufpassen muss, wenn der gegner nur noch eins zur vervollständigung der 4er-reihe braucht.</neugierdebefriedugung> --diese nachricht besteht aus 100% reseiclelebaren eläktronen und 0% rächdschreibfelern ;) mfg ludi[-][i] |
|
Profil || Suche |
|
007 09.07.2002, 23:12 Leviathan |
eine kleine frage: seit wann kann man casts ohne klammern setzen? ich hätte das auf jeden fall so geschrieben:
:edit: zu legal: soweit ich weiss ist der ergebnistyp vom == -operator (zumindest bei elementardatentypen, operatorüberladungen lassen wir einmal aussen vor) schon automatisch int, so dass man eigentlich gar keine casts bräuchte (oder ist das jetzt noch ansi-c und nicht iso-c++ ?). --Entities: HL | HL² Dieser Beitrag wurde am 09.07.2002 um 23:14 von Leviathan bearbeitet. |
|
Profil || Suche |
|
008 10.07.2002, 09:02 Tron |
das sind c++ casts, sehen aus wie konstruktor-aufrufe, also statt klassisch (int)blablubb sehen dann casts so aus: int(blablubb) diese zusaetzliche schreibweise wurden zu den nativen datentypen hinzugefuegt, um sie klassen syntaktisch anzugleichen, das wird vor allem fuer generische (template) programmierung gebraucht:
in c++ ist das ergebnis von ==, != usw. nicht int sondern bool. <edit>die liebe rechtschreibung...</edit> <edit2>hab's grade mit MinGW getestet, die signatur ist wohl 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett Dieser Beitrag wurde am 10.07.2002 um 09:22 von Tron bearbeitet. |
|
Profil || Suche |
|
009 10.07.2002, 15:57 Kriz |
(int) a oder int (a) ist egal, beides sind legale Casts. --K:R-I)Z++ |
|
Profil || Suche |
|
010 10.07.2002, 22:31 Leviathan |
@tron: wenn du mit c89 den ansi-c standart meinst, da gibt es den datentyp bool einfach gar nicht. afaik war das da immer int, aber bool ist erst mit c++ eingeführt worden und hat in den ansi-c standart keinen einzug gehalten (das ist einer der sachen, die an c häufig kritisiert wurden). und gecastet hab ich immer so: (int)(a), durch die klammern hat man das problem mit dem operatorvorrang nicht, ich hab nämlich keine ahnung, welche operatorwertigkeit ein cast hat. und werden casts in c++-klassen nicht über eine operator-funktion definiert? ich glaube das mit den operator-funktionen muss ich mir nochmal genauer durchlesen. --Entities: HL | HL² |
|
Profil || Suche |
|
011 11.07.2002, 00:05 Tron |
ne, c89 is net der urspruengliche c standard, vielleicht kam bool aber auch erst mit c99, denke aber dass es drin ist, bin mir aber wie gesagt net sicher. casts in c sind doch einfach nur (int)a, das 2te klammerpaar ist unnoetig. casten auf eine andere klasse ist einfach ein konstruktor dieser klasse, der ein objekt der anderen als parameter nimmt (am besten als referenz wegen overhead) --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
012 14.07.2002, 12:56 [RMen]OneStone |
Die zweite Klammer ist im obigen Beispiel nicht überflüssig, da ein cast ne höhere priorität als ein == Operator hat. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
013 14.07.2002, 12:56 [RMen]OneStone |
Die zweite Klammer ist im obigen Beispiel nicht überflüssig, da ein cast ne höhere priorität als ein == Operator hat. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
014 14.07.2002, 13:57 Tron |
ach nein, wirklich? 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
015 14.07.2002, 14:19 [RMen]OneStone |
1. Sorry for doublepost georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |

