Nun, es gibt mindestens zwei einfache Möglichkeiten, um festzustellen, ob eine bestimmte Zahl gerade ist oder nicht:
1. if (num%2 == 0) { /* even */ }
2. if ((num&1) == 0) { /* even */ }
Ich halte die zweite Option für weitaus eleganter und sinnvoller und verwende sie daher in der Regel. Aber es ist nicht nur eine Frage des Geschmacks; die tatsächliche Leistung kann variieren: Normalerweise sind die bitweisen Operationen (wie die logial-and hier) viel effizienter als eine mod (oder div) Operation. Natürlich kann man argumentieren, dass einige Compiler dies ohnehin optimieren können, und ich stimme dem zu... aber einige werden es nicht tun.
Ein weiterer Punkt ist, dass der zweite Punkt für weniger erfahrene Programmierer etwas schwieriger zu verstehen sein könnte. Darauf würde ich antworten, dass es wahrscheinlich nur für alle von Vorteil ist, wenn diese Programmierer sich die kurze Zeit nehmen, um diese Art von Anweisungen zu verstehen.
Was meinen Sie dazu?
Die beiden angegebenen Ausschnitte sind nur korrekt, wenn num
ist entweder ein vorzeichenloser int oder eine negative Zahl mit Zweierkomplement-Darstellung. - Wie einige Kommentare richtig feststellen.