Verständisprobleme C Syntax

wick3d

Grünschnabel
hi,

ich bin bei meinem c tutorial nun bei dem umgang mit dateien angekommen. wenn man eine datei öffnet muss man diese ja einer prüfung unterziehen. dies wird in dem tut so gelöst:

Code:
if (datei == NULL )
{
printf ("\nDie Datei konnte nicht geöffnet werden!\n");
}

was genau bedeutet das "== NULL" ?
wird dort geprüft ob die datei leer ist, also keinen inhalt besitzt ?

auch habe ich bei einer schleife vor kurzem diesen ausdruck gesehen:
1<<i

was hat das genau zu bedeuten ?

vielen dank im vorraus
greetz
 
Hallo,

wenn du eine Datei öffnen willst, bekommst du einen Rückgabe-Wert, der dir angibt, ob die Datei geöffnet werden konnte oder ein Fehler vorlag. Im Fehlerfall wird NULL zurückgegeben. Es wird also nicht geprüft, ob sie leer ist, sondern ob sie geöffnet werden konnte.
Der <<-Operator ist in C ein Verschiebe-Operator und zwar Linksverschieben. >> wäre dann Rechtsverschieben. Stell dir vor, i hätte den Wert 2. Ausgeschrieben hieße es hier "Verschiebe 1 um 2 Stellen nach links". 1 ist binär 00000001. Nach der Verschiebung steht dann im Ergebnis 00000100, also statt 1 dann 4.

Mfg

langer
 
hallo langer,

erstmal vielen dank für die erklärung. nun ist mir einiges klarer geworden :)
kannst du mir evtl noch ein beispiel nennen, wofür man eine solche bitverschiebung gebrauchen kann ?
 
Hallo,

in der MFC gibt für Color-Referenzen z.B. das Makro RGB(rot,grün,blau). Die Color-Rederenz speichert die Farbinformationen aber hintereinander in einem 32-Bit-Word. Dazu wird der rot-Wert so übernommen, wie er ist, der grün-Wert um 8 Stellen nach links verschoben und der blau-Wert um 16 Stellen. Durch bitweises Oder werden die drei Werte dann kombiniert und jeder Wert steht da, wo er hingehört.
Oder man kann damit schnelle (Integer-) Multiplikationen oder Divisionen machen. Dazu muß man sich vor Augen halten, dass jedes Bit in einem Byte einer Zweier-Potenz entspricht, das niederwertigste (rechte) 2 hoch 0, dann 2 hoch 1, 2 hoch 2 usw.
Wenn du als Ausgangswert binär 00000001 hast, entspricht die 1 der Potenz 2 hoch 0 und das ist der Wert 1. Wenn du nun schreibst "1<<2", dann erhältst du 00000100 (siehe letzte Antwort). Die 1 entspricht hier der Potenz 2 hoch 2 und das ist der Wert 4, entspricht also der Funktion "2 * 2".
Aber es gibt noch mehr Möglichkeiten, wo man die Bit-Manipulation durch Verschieben einsetzen kann, immer dann, wenn man ein Bit oder Bit-Muster an einer bestimmten Stelle im Byte, Word o. ä. braucht.

Mfg

langer
 
vielen dank für die ausführliche erläuterung :)
ich denke das ich nun mein tutorial weitermachen kann, da nun die bemerkungen des autors einen sinn ergeben ;)

bei fragen werde ich euch demnächst bestimmt wieder "nerven" :)
 

Neue Beiträge

Zurück