Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Unit, CC2-Application-Board, eigenes Board, OSOPT V3.0
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: