Что выведет следующий код?

#include <iostream> 
 
int main() 
{ 
    int i = 3; 
    int c = 0; 
    while(i) 
    { 
        ++c; 
        i ^= i & -i; 
    } 
    std::cout << c; 
    return 0; 
} 
3
ошибка компиляции
5
undefined behaviour
2