Zig-Kontrollfluss

Die Kontrollflussanweisungen der Programmiersprache Zig werden dadurch bestimmt, dass das Programm eine oder mehrere bedingte Anweisungen festlegt.

Wenn die Bedingung wahr ist, wird der angegebene Programmcode ausgeführt; wenn die Bedingung falsch ist, wird anderer angegebener Code ausgeführt.

Das folgende ist ein typisches Flussdiagramm zur Ablaufsteuerung:

Zig bietet die folgenden Kontrollstrukturanweisungen:

if-Anweisung

Syntax

Eine einfache if-Anweisung enthält eine Bedingung und einen zugehörigen Codeblock. Wenn die Bedingung wahr ist, wird der Codeblock ausgeführt.

if (<condition) {
    // 如果 condition 为 true,执行这里的代码
}

Die if-else-Anweisung fügt einer einfachen if-Anweisung einen else-Zweig hinzu. Wenn die Bedingung im if falsch ist, wird der Code im else-Zweig ausgeführt.

if (<condition>) {
    // 如果 condition 为 true,执行这里的代码
} else {
    // 如果 condition 为 false,执行这里的代码
}

condition:Ein boolescher Ausdruck. Wenn die Bedingung wahr ist, wird der erste Codeblock ausgeführt; andernfalls wird der else-Codeblock ausgeführt.

Beispiel

const std = @import("std");

pub fn main() void {
    const x: i32 = 10;
    if (x > 5) {
        std.debug.print("x ist größer als 5\n", .{});
    } else {
        std.debug.print("x ist nicht größer als 5\n", .{});
    }
}

Die Ausgabe nach Kompilierung und Ausführung ist:

x is greater than 5

if-else...else-Anweisung

Syntax

Unterstützt mehrere Bedingungsprüfungen, wobei jede Bedingung der Reihe nach geprüft wird, bis eine Bedingung wahr ist und der entsprechende Codeblock ausgeführt wird.

Beispiel

if (condition1) {
    // Wenn condition1 wahr ist, den Code hier ausführen
} else if (condition2) {
    // Wenn condition2 wahr ist, den Code hier ausführen
} else {
    // Wenn alle Bedingungen falsch sind, den Code hier ausführen
}

Beispiel

const std = @import("std");

pub fn main() void {
    const x: i32 = 10;
    if (x > 10) {
        std.debug.print("x ist größer als 10\n", .{});
    } else if (x == 10) {
        std.debug.print("x ist gleich 10\n", .{});
    } else {
        std.debug.print("x ist kleiner als 10\n", .{});
    }
}

Die Ausgabe nach Kompilierung und Ausführung ist:

x is equal to 10

Verschachtelte if-else

if-else-Anweisungen können verschachtelt werden, was bedeutet, dass man eine weitere if-Anweisung innerhalb eines if- oder else-Zweigs einfügen kann.

if (<条件1>) {
    // 如果条件1为真,执行这里的代码
    if (<条件2>) {
        // 如果条件1和条件2都为真,执行这里的代码
    } else {
        // 如果条件1为真但条件2为假,执行这里的代码
    }
} else {
    // 如果条件1为假,执行这里的代码
}

Beispiel

const std = @import("std");

pub fn main() void {
    const input = 5; // Angenommen, dies ist die Eingabe des Benutzers
    const max_value = 10;

    if (input > max_value) {
        std.debug.print("Eingabe ist größer als {}\n", .{max_value});
    } else if (input == max_value) {
        std.debug.print("Eingabe ist gleich {}\n", .{max_value});
    } else {
        if (input < 5) {
            std.debug.print("Eingabe ist kleiner als 5\n");
        } else {
            std.debug.print("Eingabe liegt zwischen 5 und {}\n", .{max_value});
        }
    }
}

Die Ausgabe nach Kompilierung und Ausführung ist:

Input is between 5 and 10

Typinferenz in if-Anweisungen

Der Zig-Compiler kann den Typ von Variablen in if-Anweisungen ableiten, wenn das Ergebnis des Bedingungsausdrucks ein boolescher Wert ist.

const condition = true;
if (condition) {
    // 这里 condition 的类型是 bool,编译器自动推导
}
Andere Erweiterungen