首页 > 解决方案 > 如何像汇编语言一样在内部解析 for 循环?

问题描述

当不编写表达式时,for 循环如何在机器语言内部工作。例如

int i=0 , j=1;
for(;;)

标签: cfor-loop

解决方案


缺少中间表达式的for循环是无限循环。

C 标准的第 6.8.5.3 节:

1声明

for ( clause-1 ; expression-2 ; expression-3 ) statement

行为如下: 表达式 expression-2 是在每次执行循环体之前计算的控制表达式。每次执行循环体后,表达式 expression-3 被评估为 void 表达式。如果clause-1 是一个声明,它声明的任何标识符的范围是声明的其余部分和整个循环,包括其他两个表达式;它在控制表达式的第一次评估之前按执行顺序到达。如果 Clause-1 是一个表达式,则在第一次计算控制表达式之前,它会被计算为一个 void 表达式。

2子句 1 和表达式 3 都可以省略。省略的表达式 2 被非零常量替换。

因为缺少的“表达式-2”被一个非零常量替换,并且因为一个非零值的计算结果为真,所以这会给你一个无限循环。


推荐阅读