3. 控制流
3.1 if 语句
生成 C:
3.2 for 循环
3.2.1 range(n) → C for
# 基本形式
for i in range(10):
sum += i
# 带起始值
for i in range(5, 10):
pass
# 带步长
for i in range(0, 10, 2):
pass
生成 C:
for (int i = 0; i < 10; i += 1) {
sum += i;
}
for (int i = 5; i < 10; i += 1) { }
for (int i = 0; i < 10; i += 2) { }
翻译器自动将
range(start, stop, step)展开为标准 C for 循环。 负步长(如range(10, 0, -1))会生成>比较。
3.2.2 字符串遍历
生成 C:
for (int __for_i = 0; name[__for_i] != 0; __for_i++) {
char c = name[__for_i];
if (c == '\0') { break; }
}
3.3 while 循环
生成 C:
3.4 do-while 循环
翻译器自动检测 while True: ... if cond: break 模式并转为 do-while:
生成 C:
条件:
while True循环体最后一条语句必须是if test: break。
3.5 break / continue / return
for i in range(100):
if i == 50:
break # → break;
if i % 2 == 0:
continue # → continue;
if i > 90:
return 0 # → return 0;
3.6 逻辑运算符
生成 C:
3.7 三目运算符
生成 C:
3.8 自增 / 自减
翻译器识别 (k, k:=k+1)[0] 模式并优化为 k++:
生成 C: