C++ 为什么不初始化?


#include<iostream>
#include<vector>
using namespace std;
struct c
{
    vector<int> x;
    void clear()
    {
        for(int i=0;i<x.size();i++)
        {
            x[i]=0;
        }
     } 
    void plus(long long a)
    {
        int cnt=0;
        long long b=a;
        while(a!=0)
        {
            cnt++;
            a/=1000000000;
        }
        a=b;
        if(cnt>x.size())
        {
            int xsize=cnt-x.size();
            for(int w=1;w<=xsize;w++)
            {
                int xxx=0;
                x.push_back(xxx);
                for(int j=1;j<=x.size();j++)
                {
                    swap(x[j-1],x[j]);
                }
            }
        }
        int i=x.size()-1;
        while(a>0)
        {
            cout<<x[i]<<" "<<a%1000000000<<" ";
            if(a%1000000000+x[i]>=1000000000)
            {
                a-=1000000000;
                if(i+1==x.size())
                {
                    x.push_back(0);
                    for(int j=0;j<x.size()-1;j++)
                    {
                        swap(x[j],x[j+1]);
                    }
                    x[i+1]+=1;
                    a-=1000000000;
                }
                else
                {
                    x[i+1]+=1;
                    a-=1000000000;
                }
             }
            x[i]+=a%1000000000;
            a/=1000000000;
            cout<<" "<<x[i]<<" "<<endl;
            i--;
        }
    }
    
    
      
    
}a;

int main()
{
    a.clear();
    a.plus(9234567891);
    //a.plus(9000000000);//a=18234567891 
    return 0;
 } 

想做到类似有效位的数据存放,可是最高位似乎并没有初始化,有谁知道吗?求!

看的蒙蒙的,说点题外话,下次要是可以,加上注释可能更好哦!



#include<iostream>
#include<vector>
using namespace std;
struct c
{
    vector<int> x;
    void clear()
    {
        for(int i=0;i<x.size();i++)
        {
            x[i]=0;
        }
     } 
    void plus(long long a)
    {
        int cnt=0;
        long long b=a;
        while(a!=0)
        {
            cnt++;
            a/=1000000000;
        }//算出a需要占用x多少个空间 
        a=b;
        if(cnt>x.size())
        {
            int xsize=cnt-x.size();
            for(int w=1;w<=xsize;w++)
            {
                int xxx=0;
                x.push_back(xxx);
                for(int j=1;j<=x.size();j++)
                {
                    swap(x[j-1],x[j]);
                }//把0移动到最前面 
            }
        }//如果x小,那么把0加入到最前面 
        int i=x.size()-1;
        while(a>0)
        {
            cout<<x[i]<<" "<<a%1000000000<<" ";
            if(a%1000000000+x[i]>=1000000000)
            {
                a-=1000000000;
                if(i+1==x.size())
                {
                    x.push_back(0);
                    for(int j=0;j<x.size()-1;j++)
                    {
                        swap(x[j],x[j+1]);
                    }
                }//当在最高位时进位 
                x[i+1]+=1;
                a-=1000000000;
             }//当需要进位时 
            x[i]+=a%1000000000;
            a/=1000000000;
            cout<<" "<<x[i]<<" "<<endl;
            i--;
        }//加起来 
    }
    void minus(long long a)
    {
        int i=0,cnt=0,cnt2=0;
        long long b=a;
        while(a>0)
        {
            cnt++;
            a/=10;
        }
        a=b;
        for(int i=0;i<x.size()-1;i++)
        {
            cnt2+=10;
        }
        int change=x[x.size()-1];
        while(change>0)
        {
            cnt2++;
            change/=10;
        }
        //cnt2存放 
    }
     void cout_c()
     {
         for(int i=0;i<x.size();i++) cout<<x[i];
      } 
     bool empty()
     {
     }
      
    
}a;
//1          10         100        1000       10000      100000     1000000    10000000   100000000  1000000000 10000000000
//2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 2000000000 4000000000
int main()
{
    a.clear();
    a.plus(9234567891);
    //a.plus(9000000000);//a=18234567891 
    return 0;
 }