c - I_n_test = I_N 在 for 循环中是什么意思?
问题描述
我试图在这里理解代码:http: //devernay.free.fr/vision/src/prosac.c
主要是因为我想把它翻译成python。
这是一个片段:
for(n_test = N, I_n_test = I_N; n_test > m; n_test--) {
// Loop invariants:
// - I_n_test is the number of inliers for the n_test first correspondences
// - n_best is the value between n_test+1 and N that maximizes the ratio
I_n_best/n_best
assert(n_test >= I_n_test);
...
...
// prepare for next loop iteration
I_n_test -= isInlier[n_test-1];
} // for(n_test ...
那么这I_n_test = I_N;
在循环语句中做了什么?
是停止条件吗?不应该是"=="
这样吗?
解决方案
你可以阅读
for(n_test = N, I_n_test = I_N; n_test > m; n_test--)
作为
for (initialization ; loop-checking condition; increment/decrement)
从规范,章节§6.8.5.3
,C11
该声明
for ( clause-1 ; expression-2 ; expression-3 ) statement
行为如下: 表达式
expression-2
是在每次执行循环体之前计算的控制表达式。每次执行循环体后,表达式expression-3
被评估为 void 表达式。ifclause-1
是一个声明,它声明的任何标识符的范围是声明的其余部分和整个循环,包括其他两个表达式;它在控制表达式的第一次评估之前按照执行顺序到达。Ifclause-1
是一个表达式,它在控制表达式的第一次评估之前被评估为一个 void 表达式。
因此,根据语法,n_test = N, I_n_test = I_N
是包含初始化语句的表达式。它们由逗号分隔。
推荐阅读
- progressive-web-apps - 渐进式 Web 应用程序是离线混合/原生应用程序的可行替代方案吗?
- kotlin - Kotlin 字符串到 Int 或零(默认值)
- powershell - 通过PowerShell使用uninstallstring卸载程序
- c# - 从数据库中获取日期时间并将其拆分
- python - 在 Django Admin 上的 changelist_view 中修改查询集
- powershell - 仅当没有用户远程登录时从 Job 启动 MSTSC/RDP
- javascript - 如何使用 vue.js 从 Promise 中的方法更新数据值?
- c# - TextBox 和 ComboBox 验证未按预期工作
- java - 如何获取resourceLoader int Spring
- python - Plotly函数将RGB颜色转换为RGBA?(Python)