c++ - for循环后面的分号是什么意思?为什么第一个循环语句中有一个j++?

标签 c++ for-loop

我需要基于优先级队列实现我自己的 Dijkstra 算法版本,在搜索有关它的一些网站时,我看到了一个实际有效但带有奇怪的 for 循环语句的算法:

int i,j,n;
cin >> n;   //number of vertexes
bool *QS = new bool [n];

//whole QS is set to false here

for(i = 0; i < n; i++) {
    for(j = 0; QS[j]; j++);
    for(u = j++; j < n; j++)
        if(!QS[j] && (d[j] < d[u]))   //d[i] is table of distances
            u = j;
    QS[u] = true;

    //some code
}

我知道 ; after loop 意味着它是空语句,但如果我评论第二个 for-loop 这个程序停止工作,所以它实际上意味着什么。我相信这个 u = j++ 应该类似于 u = j+1 的开始形式,但我不太确定。

最佳答案

for(j = 0; QS[j]; j++); 用作j=0; while(QS[j])j++;

即找到 QS[j] 为假的第 j 个

关于c++ - for循环后面的分号是什么意思?为什么第一个循环语句中有一个j++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55815414/

相关文章:

c - 如何使我的程序在每个给定时间(例如 1/s)仅迭代一次?

.net - 对于 vb.net 中的每个循环

c++ - 如何创建一个自动启动的 C++ 程序

c++ - 查找安装在 Ubuntu 上的 OpenCV 版本

c++ - 我可以将 -0.000 打印为 0.000 吗?

javascript - 使用选择器和索引重构 jQuery

python - 如何调整for循环的重复次数?

arrays - 在c中的冒泡排序中获得不同的输出

c++ - 函数的返回类型将如何影响 C++ 中的程序

c++ - 如何使用 libwebsockets C 库发送 JSON 数据?