作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
考虑以下代码:
int main() {
int a = 0;
int b = 1;
for (int i = 0; i < 3; i++) {
a = 2;
int c = 1;
int d = 3;
d = a + c;
}
a = b+2;
}
在上面的代码中,三个变量的生命周期包含在循环体中(i
、c
和 d
)。我希望能够使用 LLVM 计算其生命周期存在于任何给定循环主体中的变量(即对于这个循环,我的代码应该返回 3)。
我找到了 Live Variables Analysis ,但我无法使用它来查找我上面描述的内容。
最佳答案
也许这应该只是一个注释,但我无法表达内联代码:
只有两个变量在循环体内有持续时间。 i 在循环开始之前声明,并持续到循环体的最后一次执行之后。换句话说,c 和 d 被构造/破坏了 3 次;在第三次被破坏后,则 i 是。
因此,您编写的 for 循环相当于:
{
int i = 0;
while (i < 3)
{
a = 2;
int c = 1;
int d = 3;
d = a + c;
}
i++;
}
额外的大括号集合调用 block 作用域; i 超出范围并在 for 循环体之外被销毁,但在任何后续代码之前。
关于c++ - 如何在 for 循环中获得事件变量的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48019154/
我是一名优秀的程序员,十分优秀!