2016-04-20 4 views
-2

Für einen int Typ n, wie kann man eine Neufassung des AusdrucksWie schreibe ich wenn (n & 1)?

(n & 1) 

in Java zu kompilieren, wenn sie in einer if Anweisung verwendet? In C und C++ kompiliert es gut.

Dinge, die ich habe versucht:

if (n & 0x1) 
if (n & 0x1 == 0x1) 
if (n & 0x1 == true) 

aber der Compiler nicht mag all diese.

+0

Warum die downvotes? Ich habe wirklich eine Weile damit zu kämpfen. –

+3

Die Frage ist unklar: Ich habe nur vermutet, dass Sie das innerhalb einer 'if'-Anweisung oder ähnlichem verwenden. '(n & 1)' ist ein gültiger Ausdruck in Java. – Bathsheba

+0

Ich würde raten (und es ist eine Vermutung, da ich nicht downvote), dass dies ('n & 1' in einem' int' und Java nicht implizit konvertiert 'int' in' boolean') durch die meisten grundlegenden Tutorials so abgedeckt wird a die schnelle Suche hätte ausreichen können. – Thomas

Antwort

5

Erinnern Sie sich bitte an Ihre Operatorvorgaben!

((n & 1) == 1) wird es tun. (& hat eine geringere Priorität als == so müssen Sie die Klammern.)

Java nicht implizit zu gieße bool (die C++ der Fall ist), und die relationals nicht auswerten zu 0 und 1, wie sie in C tun

+1

[Referenz] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html). – Maroun

+2

Danke @MarounMaroun: Jetzt sollte das OP das ausdrucken und das an der Tür ihrer Toilette im Erdgeschoss festhalten. – Bathsheba

2

(n & 1) ist ein Ausdruck, der entweder 0 oder 1

kehrt Wenn Sie es boolean konvertiert werden soll (in einem Zustand zu verwenden), verwenden:

if ((n & 1) == 1) { 

} 

, die beurteilen würden (n & 1) == 1 bis true wenn (n & 1) == 1.

+0

'if ((n & 1) == 1)' bewertet nichts, weil 'if' eine Aussage ist. Nur '(n & 1) == 1 'wird jedoch zu' wahr '. – marstran

+0

@marstran Ich denke, ich sollte Klammern enthalten, um es klarer zu machen. – Eran

+0

Die Sache ist, wenn Sie es in einen booleschen Wert "umwandeln" wollen, verwenden Sie 'boolean b = (n & 1) == 1'. Sie benötigen keine if-Anweisung. – marstran

2

Es ist nichts falsch mit dem Ausdruck, außer es muss zugewiesen oder anderweitig in einer Anweisung verwendet werden oder Sie erhalten "Fehler: keine Aussage".

Das Ergebnis des Ausdrucks ist ein int, so funktioniert dies zum Beispiel:

int x = (n & 1); 
+0

Ist die reinste Antwort, bis das OP endlich geklärt ist; Plus eins. – Bathsheba

Verwandte Themen