IF-Abfrage
-
Nein, mir ging es um Folgendes:
^
ist das arithmetische XOR in C/C++ ...
^
ist fürbool
s aber nicht definiert => Kompilierfehler.
Deshalb nimmt man fürbool
types den!=
-Operator.
Der!=
-Operator verhält sich fürbool
types logisch äquivalent zum logischen XOR.
Deshalb wäre es für mich naheliegend, beibool
types und dem!=
-Operator auch vom logischen XOR zu sprechen.
Dass der!=
-Operator für andere types auch "noch mehr kann" als eine reine XOR-Verknüpfung, und er so gesehen sozusagen überladen wäre, spielt in erster Linie doch keine Rolle.
Auf unterster Ebene liegt für zweibool
-Werte ein XOR vor (siehe Analyse von @wob) ...
Daher würde ich "!=
ist "ungleich"" und "ein logisches XOR gibt es in C/C++ nicht" widersprechen, da ungenau ... eher würde ich sagen,!=
ist "vielgestaltig" in C/C++.Selbstverständlich ist das etwas Korinthenkacka, aber ich bin an der Stelle lieber etwas genauer als "zu ungenau falsch". Das ist doch hoffentlich verständlich?
-
@tech-house
^
ist arithmetische XOR, soweit richtig.
Es ist auch richtig dass es fürbool
nicht definiert ist. Genaugenommen ist es für keinen Typ definiert der formal kleiner alsint
ist. Genau so wie+
,-
etc.Das bedeutet aber nicht dass du einen Kompilierfehler bekommst. Es bedeutet dass "integral promotions" auf beiden Seiten gemacht werden. Konkret wird dabei jeder Typ der formal kleiner als
int
ist zuint
oderunsigned int
konvertiert. Siehe https://en.cppreference.com/w/cpp/language/implicit_conversion#Integral_promotionD.h. bei folgendem Code:
bool b1; bool b2; auto x = b1 ^ b2;
Macht der Compiler das daraus:
bool b1; bool b2; int x = static_cast<int>(b1) ^ static_cast<int>(b2);
Siehe https://cppinsights.io
Deshalb wäre es für mich naheliegend, bei
bool
types und dem!=
-Operator auch vom logischen XOR zu sprechen.Die Operatoren die in C++ als logische Operatoren bezeichnet werden konvertieren ihre Argumente zwingend nach
bool
. Daher ergibt1 && 2
als Ergebnistrue
- wohingegen1 & 2
als Ergebnis0
hat -- was dann zufalse
wird wenn man es nachbool
konvertiert.Und
!=
verhält sich hier wie&
, nicht wie&&
. Denn1 != 2
isttrue
, wohingegen1 LOGICAL_XOR 2
als Ergebnisfalse
haben müsste. Daher wäre es sehr irreführend es als "logisches XOR" zu bezeichnen.Daher würde ich "!= ist "ungleich"" und "ein logisches XOR gibt es in C/C++ nicht" widersprechen, da ungenau ... eher würde ich sagen, != ist "vielgestaltig" in C/C++.
Selbstverständlich ist das etwas Korinthenkacka, aber ich bin an der Stelle lieber etwas genauer als "zu ungenau falsch". Das ist doch hoffentlich verständlich?Nein. Du bist zu ungenau. Der eingebaute
!=
Operator ist immer "ungleich" und der eingebaute^
Operator ist immer bitweise XOR. Und logisch XOR gibt es nicht. Das ist genau.
-
Aber
2
ist doch gar kein validerbool
-Wert.bool b1 = 2;
werde ich wahrscheinlich nicht schreiben können.Somit fehlt die Argumentationsgrundlage für deine Argumentation, imho.
-
@tech-house sagte in IF-Abfrage:
Aber
2
ist doch gar kein validerbool
-Wert.bool b1 = 2;
werde ich wahrscheinlich nicht schreiben können.Probier es doch mal selbst aus, statt herumzuraten. Denn das geht. Dabei werden zahlen != 0 zu true evaluiert (ist das der richtige begriff hier?).
Beispielcode:bool b1 = 2; bool b2 = 0; bool b3 = -1; std::cout<<b1<<':'<<b2<<':'<<b3<<'\n';
Ausgabe:
1:0:1
-
@tech-house sagte in IF-Abfrage:
Aber
2
ist doch gar kein validerbool
-Wert.bool b1 = 2;
werde ich wahrscheinlich nicht schreiben können.Ja, was @firefly geschrieben hat und noch ein paar Details:
2
ist zwar tatsächlich kein "validerbool
-Wert", kann aber implizit in einen solchen konvertiert werden. Siehe https://en.cppreference.com/w/cpp/language/implicit_conversion:Boolean conversions
A prvalue of integral, floating-point, unscoped enumeration, pointer, and pointer-to-member types can be converted to a prvalue of type bool.
The value zero (for integral, floating-point, and unscoped enumeration) and the null pointer and the null pointer-to-member values become false. All other values become true.
Deine Gedankengänge sind schon nicht so verkehrt (
2
ist keinbool
), die Schlussfolgerungen aber etwas überstürzt
-
@tech-house
Wow. Ich hab zwar relativ viel Freizeit die ich gerne mit trivialen Dingen fülle. Trotzdem ist mir meine Zeit zu schade für diesen Unsinn.
-
@hustbaer
Es zwingt dich auch keiner, zu antworten. Behalte dein Wissen für dich. Aber gestatte anderen, Dinge, die möglicherweise falsch sind, richtigzustellen.Ich kenne das auch aus anderen Foren: Einer ist der Platzhirsch, dessen Beiträge immer richtig sind. Eine Gegenargumentation ist nicht erlaubt.
Eigentlich schade, aber da gewinnt Quantität vor Qualität.
-
Ich wuerde argumentieren, dass jenes Forum gewinnt, welches es schafft deine ban-evasion zu unterbinden.
oh well...
-
@Cardiac
Ich weiß nicht genau, was du meinst. Die Meinung einiger Mitglieder ist nun mal unumstößlich.
-
bwahahaha
-
@Cardiac sagte in IF-Abfrage:
Ich wuerde argumentieren, dass jenes Forum gewinnt, welches es schafft deine ban-evasion zu unterbinden.
oh well...Oh Mann, wieder der Typ... hätt ich echt früher merken können, das Kleingezänk am Threadende ist aber echt unverkennbar. In der physischen Welt kann man solchen "Dunkle Tetrade"-Typen wenigstens aus dem Weg gehen (wenn man mal davon absieht, dass die überdurchschnittlich häufig "Chef" werden). Im Internet haben sie echt eine riesige Spielwiese.
-
Ja, ich werde ihn in Zukunft gleich bannen. Diese Threads haben ja keinen Mehrwert für das Forum. Anscheinend habe ich mehr Erfahrung damit, solche Leute gleich wieder zu erkennen. Für mich sah das immer so aus, als wolltet ihr alle ihm doch immer noch ehrlich helfen, obwohl es doch offensichtlich ist, dass er es ist. Darum habe ich ihn jedes Mal gewähren lassen. Aber es ist wohl doch nicht so offensichtlich, wie ich dachte.
-
Dieses Mal hab ich ihn auch erst sehr spät erkannt ...
Und ich denke, alle würden ihm auch helfen wollen, wenn er es einem nur nicht immer so schwer machen würde ...
-
@SeppJ sagte in IF-Abfrage:
Ja, ich werde ihn in Zukunft gleich bannen. Diese Threads haben ja keinen Mehrwert für das Forum. Anscheinend habe ich mehr Erfahrung damit, solche Leute gleich wieder zu erkennen. Für mich sah das immer so aus, als wolltet ihr alle ihm doch immer noch ehrlich helfen, obwohl es doch offensichtlich ist, dass er es ist. Darum habe ich ihn jedes Mal gewähren lassen. Aber es ist wohl doch nicht so offensichtlich, wie ich dachte.
Ne, ich glaub ich bin einfach nur ein bisschen begriffsstutzig. Wenn ich mir den Thread nochmal von oben durchlese, ist es im Nachhinein auch offensichtlich. Die Zeit für meine Beiträge stört mich nicht, sondern dass sie niemandem etwas gebracht haben. Werde da etwas aufmerksamer sein.
-
@Belli sagte in IF-Abfrage:
Dieses Mal hab ich ihn auch erst sehr spät erkannt ...
Und ich denke, alle würden ihm auch helfen wollen, wenn er es einem nur nicht immer so schwer machen würde ...Ja, ich denke aufrichtige Hilfsbereitschaft ist ein gefundenes Fressen für solche Charaktertypen. Kein Grund die einzustellen - nur etwas aufmerksamer sein und vielleicht nicht bei allem was stutzig macht, erstmal gute Absichten des Gegenübers unterstellen.
-
Ich kann auch zu seinem nächsten Thread antworten "Das ist der Cyborg-Beta Troll, antworten ist zwecklos!". Das wäre mir sogar lieber, denn prinzipiell macht er ja immer zumindest für den Anfang nichts, wofür man ihn bannen sollte. Und für den tech-house Account war ein Bann ja eigentlich völlig überzogen für das was er auf diesen Account geschrieben hat. Das habe ich nur angesichts der Gesamthistorie getan, da ja klar war, wo das enden würde, nachdem es wieder so los ging, wie die anderen X-Male, wo ich ihm eine Chance gegeben habe. Aber es fühlt sich nicht gut an, als Moderator.
-
Ich fand die grundsätzliche Frage durchaus interessant (auch wenn nach Hausaufgabe klingend). Auch dass clang das schon so krass optimieren kann, war durchaus spannend zu gucken - wähle ich dagegen gcc in Godbolt aus, kommen beim addieren der Bools + Modulo auch tatsächlich Additionen heraus (aus mod wird aber natürlich and). Von daher: ich bin auch kein Freund des schnellen Sperrens.
-
@wob sagte in IF-Abfrage:
Ich fand die grundsätzliche Frage durchaus interessant (auch wenn nach Hausaufgabe klingend). Auch dass clang das schon so krass optimieren kann, war durchaus spannend zu gucken - wähle ich dagegen gcc in Godbolt aus, kommen beim addieren der Bools + Modulo auch tatsächlich Additionen heraus (aus mod wird aber natürlich and). Von daher: ich bin auch kein Freund des schnellen Sperrens.
Ich glaube ich habe hier auch schon auf viele faule Fragen ohne erkennbare Eigeninitiative ausschliesslich deshalb geantwortet, weil es eine interessante Frage war. Wenn das Problem spannend genug ist, mache ich auch anderer Leute Hausaufgeben (obwohl ich eigentlich nicht sollte)... aber Pssst! Nicht weitersagen!