PazeE 编译器(.NET 8/C# 实现),直接生成原生 x64/ARM64 机器码,无需 gcc/clang/nasm。 主要特性: - 词法/语法/语义分析、AST 生成、代码生成 - 目标平台:Windows (PE32+)、Linux (ELF64)、macOS (Mach-O 64)、Los4 - 架构:AMD64 与 ARM64 独立后端 - C 语法特性:匿名结构体/联合、位域、灵活数组成员、语句表达式+typeof - printf 颜色格式化、time.get.utc 时区支持 - GUI 支持:Windows (Win11 API)、Los4、Linux (X11)、macOS (ObjC) - Windows GUI 程序无控制台窗口(PE 子系统自动检测) - WiX Bundle 安装器(仅输出 .exe,MSI 作为中间产物内嵌)
48 行
1.2 KiB
Plaintext
48 行
1.2 KiB
Plaintext
// loops.pe — 验证 while / do-while / for / 嵌套循环 / break / continue
|
|
int main(void)
|
|
{
|
|
// while 累加 1..100
|
|
int sum = 0;
|
|
int i = 1;
|
|
while (i <= 100) {
|
|
sum += i;
|
|
i++;
|
|
}
|
|
printf("sum(1..100) = %d\n", sum); // 5050
|
|
|
|
// do-while 阶乘
|
|
int n = 5;
|
|
int fact = 1;
|
|
do {
|
|
fact *= n;
|
|
n--;
|
|
} while (n > 0);
|
|
printf("5! = %d\n", fact); // 120
|
|
|
|
// 嵌套 for + break/continue:收集 a==b 时的 a*b
|
|
int diag = 0;
|
|
for (int a = 1; a <= 3; a++) {
|
|
for (int b = 1; b <= 3; b++) {
|
|
if (a == b) { diag += a * b; continue; }
|
|
if (a + b > 5) break;
|
|
}
|
|
}
|
|
printf("diag = %d\n", diag); // 1+4+9 = 14
|
|
|
|
// continue 跳过偶数,累加奇数
|
|
int oddsum = 0;
|
|
for (int k = 0; k < 10; k++) {
|
|
if (k % 2 == 0) continue;
|
|
oddsum += k;
|
|
}
|
|
printf("oddsum = %d\n", oddsum); // 1+3+5+7+9 = 25
|
|
|
|
// do-while 至少执行一次(条件初值即假)
|
|
int once = 0;
|
|
int z = 10;
|
|
do { once++; } while (z < 0);
|
|
printf("once = %d\n", once); // 1
|
|
|
|
return 0;
|
|
}
|