5.2.20
12/07/19
Last Modified 06/30/19 by Walter Tasin
AlgoDat_LU9 Reload Page

Algorithmen und Datenstrukturen

Übung zum Kapitel "spezielle Operatoren"

W. Tasin, M.Sc.


Theoretische Fragen

  • Geben Sie an welchen Wert die Variable zahl nach Ablauf der angegebenen Codefragmente hat:

char zahl='A';             /* zahl=='A'==65==0x41 */
zahl=sizeof(zahl);         /* zahl==1             */

Achtung: Eine Zeichenkonstante hat in C dagegen die Größe eines Integers
zahl=sizeof('A');         /* zahl==4 (in C++: zahl==1)   */

unsigned zahl=sizeof(short);    /* ==> zahl==2  ==> Anzahl der Bytes eines short-Wertes  */
zahl=zahl*8;                    /* ==> zahl==16 ==> Anzahl der Bits eines short-Wertes */

unsigned zahl=sizeof('a'-'A');  /* ==> zahl==4 ==> Anzahl der Bytes eines int-Wertes   */

short zahl=5;
short *zeiger=&zahl;          /* Adresse der Variablen 'zahl' in 'zeiger' ablegen.                */
zahl=zahl+2;                  /* ==> zahl==7                                                      */
*zeiger=zahl*2;               /* ==> *zeiger (Dereferenziere die Adresse von zahl) <==> zahl==14  */

char *message="Hallo Text";
unsigned zahl=*(message+5);   /* Inhalt der Adresse in (message+5*sizeof(char))==(message+5) als char ==> ' ' */
                              /* ==> Leerzeichen zw. "Hallo" und "Text" */

char *message="Hallo Text";
unsigned zahl=*message-1;     /* Inhalt der Adresse in message als char <==> 'H', davon 1 subtrahieren == 'G' == 71 == 0x47 */

  • Was macht das folgende Programm?

#include <stdio.h>

int main()
{
    int zahl=0x5555aaaa;
    unsigned char expo=sizeof(zahl)*8;  /* Ermittle die Bitanzahl für die Variable 'zahl' (int) */

    while (expo>0)      /* Durchlaufe die Schleife 32 Mal ... von 32 bis 1 */
    {
        /* Ueberpruefe, ob das entsprechende Bit gesetzt ist. */
        /* Die Variable expo gibt die Bit-Stelle an, die ueberprueft werden soll.  */
        /* <=> Die Zahl 2^(expo-1) stellt binaer eine Zahl dar, in der nur 1 Bit gesetzt ist. */
        /* (Beginnend mit Bit 31, Bit 30, Bit 29 ... bis Bit 0 wird mit Bit-AND ueberueft,  */
        /*  ob dieses Bit im Inhalt der Variablen zahl gesetzt ist.) */
        if ((zahl & 1<<(expo-1)) != 0)
           putchar('1');
        else
           putchar('0');
        /* Dekrementiere den Wert von 'expo' */
        expo=expo-1;
    }
    return 0;
}

Das Programm gibt den Wert in 'zahl' als Binärzahl aus.
Ausgabe:

01010101010101011010101010101010


Links

Uebungen Algorithmen und Datenstrukturen
Unterlagen Algorithmen und Datenstrukturen
Praktikum Algorithmen und Datenstrukturen
Zur Hauptseite