Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Was macht es eigentlich?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.05.2003, 13:58 Uhr
~BM
Gast


Hallo Leute,

kann mir jemand vielleicht sagen, was diese Zeile macht, kenne mich in C nicht so aus...was soll diese & 1???Bitweise oder keine Ahnung...

if (*par < 'N' || *par >'W'|| tab[erg[nn] = *par -78] & 1)
return -1;

Bin für jeden Hinweis dankbar.


Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.05.2003, 14:54 Uhr
nAvi



Also mit dem Bitdings kannst du zB. so rauskriegen die Zahl gerade oder ungerade ist.
Des und kommt aus der Infologik, und geht wie addieren aus der ersten Klasse:

101100101010001011
000000000000000001
&_________________
000000000000000000

Die obere Zahl ist dieses tab[...] geraffel.
Die untere ist die Binäre 1.
Das und gibt immer eine eins, wenn beide Zahlen an der Bitstelle eins sind.
Ist nur eine eins, gibt es null, sind beide null ergibt es erst recht null : )
Da die letzte Stelle die wertigkeit 2 hoch 0 hat (also 1) eintscheidet sie ob die Zahl ungerade oder gerade ist. kommen beim Bitweisen und nur Nullen, ist die Zahl gerade, kommt ganz rechts eine 1 ist sie ungerade.
Die benutzten hier die Null als False Argument.

Der Rest ist (glaub ich) recht einfach.
Wenn ich den noch erklären soll einfach kurz sagen
--
Lebe als wolltest du täglich sterben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.05.2003, 15:11 Uhr
~BM
Gast


Hi,
echt cool, ich hab es verstanden...

aber weil du so nett bist kannst du mir evtl. sagen was diese 2 und 3 für eine bedeutung haben... es handelt sich um eine bedingte anweisung...

erg[nn] = tab[erg[nn] + (*(par+1)=='O' ? 2*(par+1)=='W' ? 3 : 0))];}

Danke nochmal....
Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.05.2003, 15:35 Uhr
B.o.o.M



Hier,
erg[nn] + (*(par+1)=='O' ? 2*(par+1)=='W' ? 3 : 0))

wird, falls *(par+1) ein 'O' ist, wird zu erg[nn] 2 hinzugezählt,
falls *(par+1) kein 'O' aber ein 'W' ist, zu erg[nn] 3 hinzugezählt,
falls *(par+1) kein 'O' und kein 'W' ist, 0 hinzugezählt.

das
*(par+1)=='W' ? 3 : 0

entspricht
if(*(par+1)=='W') 3
else 0
--
Beschichtet mit reinstem Salz aus heiligen Höhlen, von einem erleuchteten Yogi gegessen, wieder ausgeschwitzt, rekristalisiert, abgepackt, verschickt und von katholischen Jungfrauen im Zustand der Gnade auf diesen klebefähigen Polymerstrip aufgebracht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.05.2003, 15:44 Uhr
~MB
Gast


Danke Leute....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.05.2003, 16:29 Uhr
~0xdeadbeef
Gast


Was ist das, ein Ausschnitt aus einem Gewinnerprogramm des IOCCC? Das sieht ja richtig grausam aus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.05.2003, 20:36 Uhr
Hans
Library Walker
(Operator)



C++:
if (*par < 'N' || *par >'W'|| tab[ erg[ nn] [b]=[/b] *par -78] & 1)
        return -1;
lte vielleicht noch erwähnen, das das hier|CPP|| 'ne Zuweisung ist enthält. Da wird nämlich: *par - 78 an
erg[ nn] zugewiesen. Ich weis nicht, ob das auch im Sinne des Erfinders ist...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.05.2003, 23:38 Uhr
~ao
Gast


Ja sag mal, wo stammt denn das her? Wer soll denn daraus schlau werden, doppelte Indizierung mit ner Zuweisung mittendrin? Ist das ein Antibeispiel für unleserlichen Code?

Gruß

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.05.2003, 10:22 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
~ao postete
Ist das ein Antibeispiel für unleserlichen Code?

Lol. Du meinst es ist leserlich !?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.05.2003, 12:57 Uhr
ao

(Operator)



Zitat:
virtual postete
[quote]~ao postete
[i] Ist das ein Antibeispiel für unleserlichen Code?


Lol. Du meinst es ist leserlich !?[/i][/quote]

Ups, war wohl schon etwas spät. Nein, ich meine, es ist ein Antibeispiel, das zeigt, wie man nicht codieren sollte.

Aber woher stammt die Zeile denn? Würde mich wirklich interessieren.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: