Re: if-Abfrage bei Datentyp long Kategorie: Programmierung (von Thomas - 11.11.2004 21:24) | ||
Als Antwort auf Re: if-Abfrage bei Datentyp long von reneforster - 11.11.2004 20:37 | ||
| ||
Hallo Rene, > Nein !! scheinbar aber doch. > > //hier fragst du ob a und b ???? ja was ??? läuft so nie darein !!!! > > if a and b { Laut Doku (und so verhalte sich alle anderen Compiler) wird die if-Anweisung ausgeführt, wenn der if-Ausdruck ungleich Null ist (also wahr ist). a and b ist ungleich Null. Auch wenn der Ausdruck geklammert wird, also (a and b) bleibt das Verhalten gleich. > // wie oben !! unvollständige IF Abfrage !!! > > if r { Sehe ich wirklich nicht so "IF Ausdruck Anweisung else Anweisung". Und "r" ist ein Ausdruck. Bewertet der Complier auch so - allerdings gibt es dort nur zwei Codeblöcke für INT und FLOAT. > // ja hier gehts, vollständige IF Abfrage > > > if r != 0 { Siehe oben, auch "if r" ist vollständig (wie ja auch z.B. do { } while 1;).. > > r = 1; > > if r { > > //mit "kleinem" r funktioniert es??!! > kann auch nicht gehen, natürlich nur mit kleinen "r", C2 unterscheidet die Klein und Gro�schreibung !! Sorry, aber das r ist immer klein geschrieben. Klein ist diesmal der Inhalt. if r { } funktioniert nicht mit gro�em Inhalt (z.B. 0b100000000000000) von r aber mit kleinem Inhalt (z.B. 0b00000000000001). Und genau das halte ich für ein ernstes Problem!! Auch scheint der Compiler Literale stets als int zu bewerten (ein anderes Problem): long x; int i; for i=0..31 { x = 1 shl i; } Eigentlich müsste die "1" alle 32 Bit des Long von links nach rechts durchwandern. Tut es aber nicht - die oberen 16 Bit bleiben stets Null. Schreibe ich aber: long x; int i; long eins; eins = 1; for i=0..31{ x = eins shl i; } funktioniert es. Da ich bislang keinen cast-Operator gefunden habe, ist das nicht so schön zu lösen. Beste Grü�e Thomas | ||
Antwort schreiben Antworten: |