Linux C-Programmier-Tutorial Teil 12 – Zuweisungsoperatoren und bedingte Ausdrücke

In dieser laufenden C-Programmier-Tutorialreihe haben wir bereits einige der grundlegenden Dinge wie arithmetische, logische und relationale Operatoren sowie bedingte Schleifen wie ‚if‘ und ‚while‘ diskutiert. Darüber hinaus konzentriert sich dieses Tutorial auf Zuweisungsoperatoren (außer =) und bedingte Ausdrücke.

Beginnen wir mit den Zuweisungsoperatoren. Wenn Sie bisher grundlegende C-Programme erstellt haben (was Sie sicher vor allem nach der Durchführung unserer Tutorial-Serie haben würden), gibt es hohe Chancen, dass Sie so etwas wie das Folgende getan hätten:

a = a + 1;

Stimmt’s?

Die neue Sache, die wir heute lernen werden, ist, dass Sie diesen Ausdruck wie folgt umschreiben können:

a += 1;

Ja, das += ist ein Operator und wird auch als Zuordnungsoperator bezeichnet.

Wenn ich nun sage, dass die Verwendung solcher Zuweisungsoperatoren den Code kompakter und lesbarer macht, mögen einige von Ihnen argumentieren, dass im Kontext des von uns verwendeten Beispiels ein Inkrement-Operator genauso gut gewesen wäre, wie er auch dafür sorgt, dass der Wert von „a“ um 1 erhöht wird.

a++;

Ich stimme zu, aber denken Sie an andere Szenarien wie das folgende:

b = b + 10;
b = b + c

In diesen Fällen macht die Verwendung des Zuweisungsoperators das Schreiben, Lesen und Überprüfen von Code in einem Schritt definitiv einfach.

Noch nicht überzeugt? Vielleicht gibt Ihnen das folgende allgemeine Beispiel eine noch bessere Vorstellung vom Wert von Zuweisungsoperatoren. Sieh es dir an:

arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] = arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] + 5

Diese Codezeile braucht Zeit, um speziell verstanden zu werden, denn man muss sicherstellen, dass sich die beiden Arrays (auf jeder Seite des = Operators) auf den gleichen Wert beziehen oder nicht. In diesem Fall tun sie das, also wäre es besser, einen Zuweisungsoperator wie folgt zu verwenden:

arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] += 5;

Die Verwendung eines Zuweisungsoperators in diesem Fall hat also nicht nur die Zeile sehr leicht verständlich gemacht, sondern auch die Compilerfreundlichkeit in dem Sinne, dass sie dem Compiler helfen kann, effizienten Code zu erzeugen.

Nachdem Sie nun davon überzeugt sind (ich hoffe es wirklich), dass Zuweisungsoperatoren nützlich sind, folgt hier eine Liste von Operatoren, die einen entsprechenden binären Operator haben:

+ - * / % << >> & ^ |

Die ersten fünf Operatoren in der Liste, die wir bereits in unseren Tutorials besprochen haben. Die letzten fünf sind bitweise Operatoren, und wir werden sie in einem unserer kommenden Tutorials diskutieren. In der Zwischenzeit finden Sie hier einen kurzen Hinweis auf Zuweisungsoperatoren, die einigen dieser Operatoren entsprechen:

a += b;
a -= b;
a *= b;
a /= b;
a %= b;

Also im Allgemeinen können Sie bedenken, dass die folgenden:

expression1 = (expression1) op (expression2)

kann ausgedrückt werden als:

expression1 op= expression2

wobei „op“ der verwendete Operator ist, wie +, -, -, * und mehr.

Bitte beachten Sie, dass der folgende Ausdruck sowie ähnliche Ausdrücke:

a *= b - c

wird sich erweitern als:

a = a * (b-c)

Ich hoffe, dass es mir gelungen ist, das Konzept der Zuweiser zumindest auf der grundlegenden Ebene klarzustellen. Kommen wir nun zur Sache, lassen Sie uns kurz auf bedingte Ausdrücke eingehen.

Nehmen wir das folgende Beispiel:

if(a==b)
  c = c + 1;
else
  c = c - 1;

Bedingte Ausdrücke helfen Ihnen, solche Logiken in einer einzigen Zeile zu schreiben. Hier ist die Vorgehensweise:

c = (a==b) ? (c+1) : (c -1)

Hier wird also zunächst die Bedingung (a===b) überprüft. Wenn es wahr ist, dann wird (c+1) c zugewiesen, sonst (c-1) c. Hier ist ein Beispiel-Code, um die Dinge klarer zu machen:

int main()
{
 int a = 6, b = 5, c = 9;

c = (a==b) ? (c+1) : (c -1) ;

printf(„\n %d \n“, c);

return 0;
}

Da a hier nicht gleich b ist, wird c zugewiesen (c-1), d.h. der neue Wert von c wird zu 8. Für den Fall, dass Sie es brauchen, hier ist die generische Form von bedingten Ausdrücken:

expression1 ? expression2 : expression3

Fazit

Ich hoffe, Sie haben eine Grundidee über Zuweisungsoperatoren und bedingte Ausdrücke. Du wirst jetzt ermutigt, diese in deinen täglichen Programmieraktivitäten zu verwenden, und wenn du auf irgendeine Art von Problem stößt, vergiss nicht, uns hier einen Kommentar zu hinterlassen.

Das könnte dich auch interessieren …