Gibt es eine Möglichkeit, ohne logische und bitweise Operatoren, nur arithmetische Operatoren, zwischen ganzen Zahlen mit dem Wert 0 und 1 zu wechseln?
dh. "Variable? = Variable" macht die Variable zu einer 1, wenn sie 0 ist, oder zu einer 0, wenn sie eine Eins ist
!x
,(x <= 0)
,(x == 0)
etc.Antworten:
Schaltet zwischen 0 und 1 um.
quelle
x
es sich in einem bestimmten Bereich positiver Zahlen befindet, dies auch verwenden, um seinen Wert umzukehren (dh7-x
= 0/7, 1/6, 2/5, 3/4).Bearbeiten: Ich habe die Frage falsch verstanden, dachte, das OP könnte
any
Operator verwendenEin paar mehr ... (ignoriere diese)
x ^= 1 // bitwise operator x = !x // logical operator x = (x <= 0) // kinda the same as x != 1
Ohne Operator?
int arr[] = {1,0} x = arr[x]
quelle
x = !x
ist eine gute Lösung, da sie mit Werten umgeht, die nicht Null oder Eins sind.Angenommen, es wird als 0 oder 1 initialisiert:
quelle
Noch ein anderer Weg:
quelle
x = (A + B) % 2
Wenn A und B beide 0 oder 1 sind. Danke!Comedy-Variation der zweiten Methode von st0le
quelle
x = x["\1"];
(C und C ++).Ein anderer Weg, um ein bisschen umzudrehen.
quelle
quelle
Nur für ein bisschen Abwechslung:
Nicht sicher, ob Sie arithmetische Operatoren betrachten
==
und!=
sein sollen. Wahrscheinlich nicht, und obwohl sie in C funktionieren, würden stärker typisierte Sprachen das Ergebnis nicht in eine Ganzzahl konvertieren.quelle
Sie können dies einfach versuchen
quelle
Sie können einfach verwenden:
abs(x-1)
oder einfach:int(not x)
quelle