Was ist das für ein Konstrukt return !!::gmatch( ?
-
warum benutzt du bewußt code von dem du weißt das er verwirrend ist? willst du deine nachfolger ärgern?
-
Hallo
Das hat er doch geschrieben. Lies es dir halt durch.
chrische
-
Da steht nur, dass das "alt und gut" ist.
Wo ist der Vorteil gegenüber der Schreibweise x != 0?
-
Hallo
MFK schrieb:
Da steht nur, dass das "alt und gut" ist.
Wo ist der Vorteil gegenüber der Schreibweise x != 0?Bin ich blöd?
hustbaer schrieb:
MSVC z.B. meckert (performance warning) wenn man nen static_cast<bool>(x) macht. Bei !!x meckert MSVC NICHT, daher hab' ich mir das angewöhnt.
chrische
-
chrische5 schrieb:
Bin ich blöd?
Ich fragte nicht nach dem Vorteil gegenüber dem Cast, sondern gegenüber x != 0.
hustbaer schrieb:
Man kann allerdings auch x != 0 schreiben, was Noobs dann besser verstehen.
-
Hallo
MFK schrieb:
chrische5 schrieb:
Bin ich blöd?
Ich fragte nicht nach dem Vorteil gegenüber dem Cast, sondern gegenüber x != 0.
hustbaer schrieb:
Man kann allerdings auch x != 0 schreiben, was Noobs dann besser verstehen.
Dann bin ich tatsächlich blöd.

chrische
-
hustbaer schrieb:
Jupp.
MSVC z.B. meckert (performance warning) wenn man nen static_cast<bool>(x) macht. Bei !!x meckert MSVC NICHT, daher hab' ich mir das angewöhnt.gibt er auch so'ne fehlermeldung aus, wenn du einen C-style cast benutzt (bool)x?
naja, ist möglicherweise nicht das selbe, weil ein bool in C++ ja eigentlich ein char ist.
-
Undertaker schrieb:
naja, ist möglicherweise nicht das selbe, weil ein bool in C++ ja eigentlich ein char ist.
Wer hat dir denn das erzählt? 'bool' ist ein eigenständiger Datentyp, der zwei mögliche Werte annehmen kann.
-
CStoll schrieb:
Undertaker schrieb:
naja, ist möglicherweise nicht das selbe, weil ein bool in C++ ja eigentlich ein char ist.
Wer hat dir denn das erzählt? 'bool' ist ein eigenständiger Datentyp, der zwei mögliche Werte annehmen kann.
hab' mal gehört, dass bool kein bit sondern sizeof(char) gross ist.
aber, ich hab's gerade ausprobiert: (bool)13 ergibt 1, ohne warnings des msvc.

-
Wie groß bool ist, wird afaik nicht festgelegt - aber 1 Byte ist das kleinste, was C++ direkt verarbeiten kann. (aber selbst wenn zwei Datentypen identische Größe haben, sagt das herzlich wenig über ihre Verwandschaftsverhältnisse aus - int ist häufig genauso groß wie long oder short, long double genauso groß wie double - und signed int und unsigned int haben per Definition die selbe Größe)
(btw, in einem vector<bool> wird tatsächlich nur 1 Bit pro Wert benötigt)
-
Also Leute... ehrlich.
Wer a = !!b; nicht versteht der soll heimgehen, den kann als C++ Programmierer keiner gebrauchen.
Klar darf man dafür auch mal ein paar Minuten überlegen, bis man sich eben sicher ist dass es doch das und nichts anderes tut als das was man vermutet(nämlich 2x "verneinen"), aber davon geht die Welt nicht unter -- das macht man 1x und dann weiss man es.Ansonsten: C-Style Casts schreibe ich aus Prinzip keine mehr, und das "!= 0" ist eben nicht gerade übersichtlich, weils hinten dran steht. Daher ist "!!" eigentlich übersichtlicher und besser, auch wenn man mal doof guckt wenn man es noch nicht kennt.
Dasselbe trifft allerdings auf viele andere Dinge auch zu, Templates, Virtual Pure Funktionen, virtuelle Vererbung etc. - das alles ist erstmal (auch syntaktisch) etwas bis sehr verwirrent wenn man es noch nicht kennt. Was aber IMO kein Grund sein sollte es nicht zu verwenden.Davon abgesehen war das ganze auch nicht so 100% ernst gemeint.
p.S.: wer jetzt auf die Idee kommt man könnte ja auch "0 != ..." schreiben, damit's eben vorne dransteht: das mach' ich auch aus Prinzip nicht -- kommt mir irgendwie "verkehrt herum" vor. Klar isses dem Compiler egal ob man "variable != konstante" oder "konstante != variable" schreibt, aber "variable != konstante" finde ich nunmal verständlicher, natürlicher, ... .