c - 如何像汇编语言一样在内部解析 for 循环?
问题描述
当不编写表达式时,for 循环如何在机器语言内部工作。例如
int i=0 , j=1;
for(;;)
解决方案
缺少中间表达式的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”被一个非零常量替换,并且因为一个非零值的计算结果为真,所以这会给你一个无限循环。
推荐阅读
- excel - 任何 Office 365 应用程序中的 VBA 编辑器不再打开
- php - 如何根据 Laravel 的工作原理制作自己的 PHP IoC/DIC?
- excel - Excel VBA - 检查特定工作表和命名单元格的功能是否存在于工作簿中
- json - 带有 JSON 和 Golang 的无限结构
- perl - Perl 检索 Unix 会话 ID 和会话负责人
- python - 希望 curl 在提取网站数据之前等待 15 秒
- android - 如何在 android.widget.SearchView 中仅修复华为设备上的崩溃
- uwp - 写入时的串口问题
- forms - 如何在 Access(富文本)文本框中放置空白下划线
- floating-point - 如何在 Frama-C 中用真正的公理证明代码