为什么第一个代码只可以在c小于10时运行,第二个却可以在c大于10时运行?

#include<stdio.h>
#include<math.h>
int main()
{
int a=2,b=10,c,sum=0;
scanf("%d",&c);
while(b<=pow(10,c))
{
sum=sum+a;
a=a+b2;
b=10
b;

}
printf("%d\n",sum);
return 0;

}

#include<stdio.h>
#include<math.h>
int main()
{
int a=2,b=10,c,sum=0,i=1;
scanf("%d",&c);
while(i<=c)
{
sum=sum+a;
a=a+b2;
b=10
b;
i++;

}
printf("%d\n",sum);
return 0;

}


int main()
{
    int  c = 10;
    long long b = 10, a = 2, sum = 0;
    //scanf("%d",&c);
    long long num = pow(10,15);
    printf("%lld\n", num);
    while (b <= num)
    {
        sum = sum + a;
        a = a + b * 2;
        b = b * 10;
        printf("%lld\n",b);
    }
    printf("%lld\n", sum);
    system("pause");
    return 0;
}