新手:编译时出现C语法错误

han*_*nah 1 c for-loop comma-operator

    for(int a = 0, b = 1; b < n; a++; b++)
    {
        if (compare(values[a], values[b]))
            counter++;
        else
            {
            int x = values[a];
            values[a] = values[b];
            values[b] = x;
            }
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,第一行[for(int ...])出现此错误:

helpers.c:68:41: error: expected ')' before ';' token
Run Code Online (Sandbox Code Playgroud)

为什么我需要添加另一个')'?

Lev*_*von 11

for(int a = 0, b = 1; b < n; a++; b++)
                                ^
                                |
                              problem
Run Code Online (Sandbox Code Playgroud)

你需要一个逗号(,),而不是一个分号(;)在你结束for-loop在那里你既增加ab:

for(int a = 0, b = 1; b < n; a++, b++)
                                ^
Run Code Online (Sandbox Code Playgroud)

这是逗号运算符.

这两个SO问题也可能有用:如何在C++'for'循环中放入两个递增语句?什么是全"为"用C循环语法(如果和其他人,他们是兼容的)?