Zig 循环

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Zig 循环

在 Zig 中,循环结构包括 while 循环和 for 循环。每种循环都有其特定的语法和用法。下面详细介绍这两种循环结构,包括其语法、说明和实例。

1、while 循环

语法

while (condition) : (increment) {

   // code block

}

  • condition:一个布尔表达式,只要它为 true,循环就会继续执行。
  • increment(可选):一个在每次循环结束后执行的表达式。

说明

while 循环在每次迭代前检查条件。如果条件为 true,则执行循环体中的代码。循环体执行完毕后,执行 increment 表达式(如果有)。然后再次检查条件,直到条件为 false

实例

实例

const std = @import("std");


pub fn main() void {

   var i: i32 = 0;

   while (i < 5) : (i += 1) {

       std.debug.print("i: {}\n", .{i});

   }

}

解析:

  • 初始化变量 i 为 0。
  • 只要 i 小于 5,循环体就会执行。
  • 每次循环结束后,i 自增 1。

代码编译执行结果为:

i: 0

i: 1

i: 2

i: 3

i: 4

2、for 循环

语法

for (collection) |item, index| {

   // code block

}

  • collection:一个数组、切片或其他可迭代的集合。
  • item:在每次迭代中,集合的当前元素。
  • index(可选):当前元素的索引。

说明

for 循环用于遍历一个集合中的每个元素。在每次迭代中,集合的当前元素被赋值给 item,并执行循环体中的代码。

实例

实例

const std = @import("std");


pub fn main() void {

   const array = [5]i32{ 1, 2, 3, 4, 5 };

   var index: usize = 0; // 索引变量需要声明类型

   for (array) |item| {

       std.debug.print("index: {}, item: {}\n", .{ index, item });

       index += 1; // 更新索引

   }

}

解析:

  • 定义了一个包含 5 个整数的数组。
  • 使用 for 循环遍历数组中的每个元素,并将元素值赋给 item,索引赋给 index
  • 在循环体中,打印每个元素的值和索引。

代码编译执行结果为:

index: 0, item: 1

index: 1, item: 2

index: 2, item: 3

index: 3, item: 4

index: 4, item: 5

3、continuebreak

语法

  • continue:跳过当前迭代并继续下一次迭代。
  • break:终止循环。

说明

continue 用于跳过当前迭代中剩余的代码,并立即开始下一次迭代。break 用于终止整个循环。

实例

实例

const std = @import("std");


pub fn main() void {

   var i: i32 = 0;

   while (i < 10) : (i += 1) {

       if (i == 5) {

           continue; // 跳过 i 等于 5 的那次迭代

       }

       if (i == 8) {

           break; // 终止循环

       }

       std.debug.print("i: {}\n", .{i});

   }

}

解析:

  • i 等于 5 时,continue 跳过该次迭代。
  • i 等于 8 时,break 终止循环。

代码编译执行结果为:

i: 0

i: 1

i: 2

i: 3

i: 4

i: 6

i: 7

5、嵌套循环

语法

for (outer_collection) |outer_item| {

   for (inner_collection) |inner_item| {

       // code block

   }

}

说明

在一个循环体内包含另一个循环称为嵌套循环。外层循环的每次迭代中,都会执行内层循环。

实例

实例

const std = @import("std");


pub fn main() void {

   // 声明一个包含三个字符串的数组

   const letters = [_][]const u8{ "A", "B", "C" };

   // 遍历数组

   for (letters) |letter| {

       var count: i32 = 0; // 声明计数器

       // 使用 while 循环来打印每个字母和计数

       while (count < 3) : (count += 1) {

           std.debug.print("{s} - {}\n", .{ letter, count });

       }

   }

}

解析:

  • 外层 for 循环遍历字母数组。
  • 内层 while 循环执行 3 次,打印字母和计数。

代码编译执行结果为:

A - 0

A - 1

A - 2

B - 0

B - 1

B - 2

C - 0

C - 1

C - 2

6、更多循环

无限循环

可以使用 while 循环创建一个无限循环,只要条件始终为真:

实例

pub fn main() void {

   while (true) {

       // 代码块

       // 必须包含某种退出机制,否则程序将永远运行

   }

}

范围循环

Zig 还允许你使用范围来循环,这在某些情况下可以简化代码:

实例

pub fn main() void {

   for (0..10) |i| {

       std.debug.print("i: {}\n", .{i});

   }

}

标签循环

Zig 支持标签循环,允许你命名循环,这在嵌套循环中非常有用:

实例

pub fn main() void {

   loop: while (true) {

       while (true) {

           std.debug.print("Inside nested loop\n");

           break :loop; // 退出外部循环

       }

   }

}

目录
相关文章
|
8月前
|
人工智能 C语言 Python
关于c语言循环,我想说的是:
关于c语言循环,我想说的是:
|
4月前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
256 88
|
2月前
|
编译器
Zig 函数
Zig 函数
44 1
|
7月前
|
Rust 算法 开发者
Rust循环控制结构详解
Rust循环控制结构详解
|
8月前
|
C语言
C语言8🔥:while循环与 do while 循环
C语言8🔥:while循环与 do while 循环
166 0
|
8月前
|
C语言
C语言10🔥:for 循环
C语言10🔥:for 循环
99 0
|
8月前
|
Rust 测试技术
【Rust】——控制流(if-else,循环)
【Rust】——控制流(if-else,循环)
|
8月前
|
C语言
C语言循环及条件语句
C语言循环及条件语句
88 0
【C语言】——do - while循环
【C语言】——do - while循环
【C语言】——do - while循环
|
程序员 C语言
11 C语言 - 循环
11 C语言 - 循环
46 0

热门文章

最新文章