C++十进制转化为二进制数

这个代码运行的时候为什么b%2*i无法赋值给zheng?
#include

using namespace std;

int main()

{

double a,c,xiao;

int b,zheng=0;

cin >> a;

b = (int)a;

c = a - (int)a;

while (b != 0)

{

    int i = 1;

    zheng += b % 2 *i;

    b /= 2;

    i *= 10;

}

cout << zheng << endl;

return 0;

}

要把int i=1;放在外面

#include<bits/stdc++.h>

using namespace std;

int main()

{

double a,c,xiao;
 
int b,zheng=0;
 
cin >> a;
 
b = (int)a;
 
c = a - (int)a;

int i = 1;
 
while (b != 0)
 
{
 
    zheng += b % 2 *i;
 
    b /= 2;
 
    i *= 10;
 
}
 
cout << zheng << endl;
 
return 0;
}