在C中使用未声明的标识符'a'

Nic*_*k K 0 c bit-manipulation bit

我一直收到错误说"使用未声明的标识符'a'".据我所知,我声明'a'等于0所以应该设置它.

int numOfBits(short num)
{
    for(int a = 0; num; num >> 1){
        a += num & 1;
    }
    return a;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*art 7

它超出了范围.

int numOfBits(short num)
{
    // Requires C99 for loop variable declaration
    for(int a = 0; num; num >> 1) {   // `a` declared *inside* the
                                      // for loop block scope
        a += num & 1;
    }
    return a;                         // `a` is no longer in scope
}
Run Code Online (Sandbox Code Playgroud)

只需移出声明:

int numOfBits(short num)
{
    int a;
    for(a = 0; num; num >> 1) {
        a += num & 1;
    }
    return a;
}
Run Code Online (Sandbox Code Playgroud)