erste gehversuche in C

if((value & (value - 1) == 0)
{
printf("Wann werde ich ausgeführt?");
}


ich habe nochmal nachgeschaut. so sieht der code aus. aber ich habe noch jemanden gefragt und warte auf seine mail.
 
Bei diesem angeblich richtigen Code passen die Klammern nicht, wie cwriter schon gesagt hat.
Wenn das die Angabe ist sag das dem Lehrer, dass das so nicht geht, und fertig.
Soll zuerst klarstellen, ob die zweite ( auch mal wieder geschlossen wird oder weggehört.

@cwriter, wegen dem (vor)letzten Post: Siehe meinen langen, den Teil zur Operatorreihenfolge.

Oder probierts aus. Jeden int-Wert bruteforce durch. Das bestätigt, dass nur 1 geht.
C++:
#include<stdio.h>

int main()
{
	int i = 0;
	do
	{
		if(i&(i-1)==0)
			printf("%d ", i);
		i++;
	}while(i);

	return 0;
}
 
@sheel
Einverstanden, wenn man die Klammer weglässt, ist das so (auch wenn ich arithmetische Ordnung bevorzugt hätte, aber es ist nunmal so).
Aber ich frage mich jeweils: Warum sollte man so eine Aufgabe stellen? Wenn man die Aufgabe darin sieht, zu erkennen, dass die Klammerzahlen nicht aufgehen: Das sagt dir spätestens der Compiler.
Die Idee des "es gibt nur eine Lösung (Konstante)": Gut, die Rangordnung besprechen. Gut möglich. Ebenso ist es möglich, dass ein Resultat erwartet wird, das generell über Computer, also Bytes, fragt.
Ich wette ein Danke auf if((value & (value-1))==0). Machst du mit?

Gruss
cwriter
 
Ebenso ist es möglich, dass ein Resultat erwartet wird, das generell über Computer, also Bytes, fragt.
Den Satz hab ich nicht verstanden.

Sonst, zur Wette: Eigentlich würde ich auf das Selbe setzen :D
(Und dann ist 1<<n (2 hoch n) auch richtig)
Weil, dass man im Anfängerstadium eine Frage bekommt, deren Antwort wäre
"Ist laut Standard nicht wirklich definiert" ist...naja, unwahrscheinlich gemein.
 
O.o

Von wem stammt dieser Code eigentlich? Das sieht ja übel aus...
C:
if(((value & (value- 1)) == 0))
Nachdem die Klammern gekürzt wurden:
C:
if((value & (value- 1)) == 0)
Und damit müsste die Lösung 1 << n (pow(n,2.0f)) sein.

@sheel
Den Satz verstehe ich auch nicht ;-)
Sollte in etwa heissen: Die Lösung sollte mit den Bits spielen.

Gruss
cwriter
 
Zurück