Wird dieser C-Ausdruck immer als wahr ausgewertet?Bit-Manipulations-Rätsel
((x+y)<<4) + y - x == 17*y +15*x
Von dem, was ich der Arithmetik sagen kann, ist richtig, aber das einzige, was ich bin nicht sicher, über das, was wird in Fällen von Überlauf passiert.
Mein Verständnis ist, dass die C-Multiplikation Ausdrücke handhaben gleichen Weg wie eine Bit-Verschiebung wäre, aber ich bin mir nicht sicher.
Kennt jemand die Antwort darauf?
Haben Sie versucht, den Code auszuführen und absichtlich einen Überlauf zu verursachen? –
Was sind die Arten dieser Variablen? Insbesondere signiert oder unsigniert? – user2357112
Stellen Sie eine [mcve] bereit. Der Ausdruck könnte ein undefiniertes Verhalten in ** all ** -Operationen auslösen. – Olaf