diff options
Diffstat (limited to 'de-de')
| -rw-r--r-- | de-de/c-de.html.markdown | 165 | 
1 files changed, 83 insertions, 82 deletions
| diff --git a/de-de/c-de.html.markdown b/de-de/c-de.html.markdown index fceec5d4..e493a303 100644 --- a/de-de/c-de.html.markdown +++ b/de-de/c-de.html.markdown @@ -89,6 +89,89 @@ int main (int argc, char** argv){      printf("%d\n",0); // => Gibt 0 aus.      //////////////////////////////////////////////// +    // Operatoren +    //////////////////////////////////////////////// +     +    // Kurzschreibweise für mehrere Deklarationen +    int i1 = 1, i2 = 2; +    flaot f1 = 1.0, f2 = 2.0; + +    int b,c; +    b = c = 0; + +    // Arithmetik ist unkompliziert +    1 + 2; // => 3 +    2 - 1; // => 1 +    2 * 1; // => 2 +    1 / 2; // 0 (0.5, aber abgeschnitten, da es int sind.) + +    // Man muss mindestens ein Integer zu einen float konvertieren, damit man als +    // Resultat eine Gleitkommazahl erhält. +    (float)1 / 2; // => 0.5f +    1 / (double)2; // => 0.5 // das gleiche mit dem Typ `double` +    1.0 / 2.0; // => 0.5, plus oder minus Epsilon +    // Gleitkommazahlen und deren Berechnungen sind nicht exakt. + +    // Es gibt auch die Möglichkeit, Modulo zu rechnen +    11 % 3; // => 2 + +    // Vergleichsoperatoren sind vielleicht schon bekannt, aber in C gibt es +    // keinen Boolean-Typ. In C verwenden wir `int`. (Oder _Bool oder bool in C99) +    // 0 ist falsch, alles andere ist wahr (Die Vergleichsoperatoren ergeben +    // immer 1 oder 0. +    3 == 2; // => 0 (falsch) +    3 != 2; // => 1 (wahr) +    3 > 2; // => 1 +    3 < 2; // => 0 +    2 <= 2; // => 1 +    2 >= 2; // => 1 + +    // C ist nicht Python - Vergleiche können nicht einfach verkettet werden. +    // Warnung: die folgende Zeile wird kompilieren, aber es bedeutet `(0 < a) < 2`. +    // Dieser Ausdruck ist immer wahr, weil (0 < a) kann entweder 1 oder 0 sein. +    // In diesem Falle ist es 1, weil (0 < 1). +    int zwischen_0_und_2 = 0 < a < 2; +    // Benutze stattdessen folgende Schreibweise: +    int zwischen_0_und_2 = 0 < a && a < 2; + +    // Logik funktioniert auch mit ints +    !3; // => 0 (logisches Nicht) +    !0; // => 1 +    1 && 1; // => 1 (logisches Und) +    0 && 1; // => 0 +    0 || 1; // => 1 (logisches Oder) +    0 || 0; // => 0 + +    // Bedingter ternärer Ausdruck ( ? : ) +    int e = 5; +    int f = 10; +    int z; +    z = ( e > f ) ? e : f; // => // => 10 "wenn e > f ist, gib e zurück, sonst f." + +    // Inkrementierungs- und Dekrementierungsoperatoren +    int j = 0; +    int s = j++; // gib j zurück und erhöhe danach j. (s = 0, j = 1) +    s = ++j; // erhöhe zuerst j und gib dann j zurück (s = 2, j = 2) +    // das gleiche gilt für j-- und --j + +    // Bitweise Operatoren +    ~0x0F; // => 0xFFFFFFF0 (Bitweise Negation, "Einer-Komplement", +           // Beispielresultat für 32-Bit int) +    0x0F & 0xF0; // => 0x00 (Bitweises UND) +    0x0F | 0xF0; // => 0xFF (Bitweises ODER) +    0x04 ^ 0x0F; // => 0x0B (Bitweises XOR) +    0x01 << 1; // => 0x02 (Bitweises  Linksverschiebung (left shift) (um 1)) +    0x02 >> 1; // => 0x01 (Bitweises Rechtsverschiebung (right shift) (um 1)) + +    // Sei vorsichtig beim Shift mit vorzeichenbehafteten Integern +    // folgende Ausdrücke sind nicht definiert: +    // - Verschiebung in das Vorzeichenbit (int a = 1 << 31) +    // - Linksshift einer negativen Zahl (int a = -1 << 2) +    // - Shift um einen Offset, welcher >= die Breite des linken Ausdrucks ist. +    // int a = 1 << 32; // undefiniertes Verhalten, wenn int 32-Bit ist. +     + +    ////////////////////////////////////////////////      // Typen      //////////////////////////////////////////////// @@ -213,88 +296,6 @@ int main (int argc, char** argv){      int array_int = multi_array[0][2]; // => 3      //////////////////////////////////////////////// -    // Operatoren -    //////////////////////////////////////////////// -     -    // Kurzschreibweise für mehrere Deklarationen -    int i1 = 1, i2 = 2; -    flaot f1 = 1.0, f2 = 2.0; - -    int b,c; -    b = c = 0; - -    // Arithmetik ist unkompliziert -    i1 + i2; // => 3 -    i2 - i1; // => 1 -    i2 * i1; // => 2 -    i1 / i2; // 0 (0.5, aber abgeschnitten, da es int sind.) - -    // Man muss mindestens ein Integer zu einen float konvertieren, damit man als -    // Resultat eine Gleitkommazahl erhält. -    (float)i1 / i2; // => 0.5f -    i1 / (double)i2; // => 0.5 // das gleiche mit dem Typ `double` -    f1 / f2; // => 0.5, plus oder minus Epsilon -    // Gleitkommazahlen und deren Berechnungen sind nicht exakt. - -    // Es gibt auch die Möglichkeit, Modulo zu rechnen -    11 % 3; // => 2 - -    // Vergleichsoperatoren sind vielleicht schon bekannt, aber in C gibt es -    // keinen Boolean-Typ. In C verwenden wir `int`. (Oder _Bool oder bool in C99) -    // 0 ist falsch, alles andere ist wahr (Die Vergleichsoperatoren ergeben -    // immer 1 oder 0. -    3 == 2; // => 0 (falsch) -    3 != 2; // => 1 (wahr) -    3 > 2; // => 1 -    3 < 2; // => 0 -    2 <= 2; // => 1 -    2 >= 2; // => 1 - -    // C ist nicht Python - Vergleiche können nicht einfach verkettet werden. -    // Warnung: die folgende Zeile wird kompilieren, aber es bedeutet `(0 < a) < 2`. -    // Dieser Ausdruck ist immer wahr, weil (0 < a) kann entweder 1 oder 0 sein. -    // In diesem Falle ist es 1, weil (0 < 1). -    int zwischen_0_und_2 = 0 < a < 2; -    // Benutze stattdessen folgende Schreibweise: -    int zwischen_0_und_2 = 0 < a && a < 2; - -    // Logik funktioniert auch mit ints -    !3; // => 0 (logisches Nicht) -    !0; // => 1 -    1 && 1; // => 1 (logisches Und) -    0 && 1; // => 0 -    0 || 1; // => 1 (logisches Oder) -    0 || 0; // => 0 - -    // Bedingter ternärer Ausdruck ( ? : ) -    int e = 5; -    int f = 10; -    int z; -    z = ( e > f ) ? e : f; // => // => 10 "wenn e > f ist, gib e zurück, sonst f." - -    // Inkrementierungs- und Dekrementierungsoperatoren -    int j = 0; -    int s = j++; // gib j zurück und erhöhe danach j. (s = 0, j = 1) -    s = ++j; // erhöhe zuerst j und gib dann j zurück (s = 2, j = 2) -    // das gleiche gilt für j-- und --j - -    // Bitweise Operatoren -    ~0x0F; // => 0xFFFFFFF0 (Bitweise Negation, "Einer-Komplement", -           // Beispielresultat für 32-Bit int) -    0x0F & 0xF0; // => 0x00 (Bitweises UND) -    0x0F | 0xF0; // => 0xFF (Bitweises ODER) -    0x04 ^ 0x0F; // => 0x0B (Bitweises XOR) -    0x01 << 1; // => 0x02 (Bitweises  Linksverschiebung (left shift) (um 1)) -    0x02 >> 1; // => 0x01 (Bitweises Rechtsverschiebung (right shift) (um 1)) - -    // Sei vorsichtig beim Shift mit vorzeichenbehafteten Integern -    // folgende Ausdrücke sind nicht definiert: -    // - Verschiebung in das Vorzeichenbit (int a = 1 << 31) -    // - Linksshift einer negativen Zahl (int a = -1 << 2) -    // - Shift um einen Offset, welcher >= die Breite des linken Ausdrucks ist. -    // int a = 1 << 32; // undefiniertes Verhalten, wenn int 32-Bit ist. -     -    ////////////////////////////////////////////////      // Kontrollstrukturen      ////////////////////////////////////////////////      if (0){ | 
