求助关于结构体的一个玄学问题
  • 板块学术版
  • 楼主喀拉客
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/8/13 16:05
  • 上次更新2023/11/4 10:48:06
查看原帖
求助关于结构体的一个玄学问题
215742
喀拉客楼主2021/8/13 16:05

下面代码是高精度的模版(来自《深基》第124页),为何我把a声明在main函数外面就无法输出结果(编译器也没报错),声明在main函数中就没事?

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

const int maxn=600;

struct Bigint
{
    int len,a[maxn];

    Bigint(int x=0)
    {
        memset(a,0,sizeof(a));
        for(len=1;x;len++)
            a[len]=x%10,x/=10;
        len--;
    }
    int &operator[](int i)
    {
        return a[i];
    }
    void flatten(int L)
    {
        len=L;
        for(int i=1;i<=len;++i)
            a[i+1]+=a[i]/10,a[i]%=10;
        for(;!a[len];)
            len--;
    }
    void print()
    {
        for(int i=max(len,1);i>=1;--i)
            printf("%d",a[i]);
    }
};

Bigint operator*(Bigint a,int b)
{
    Bigint c;
    int len=a.len;
    for(int i=1;i<=len;++i)
        c[i]=a[i]*b;
    c.flatten(len+11);
    return c;
}


int main()
{
    Bigint a(15645544);
    a=a*2;
    a.print();
}

2021/8/13 16:05
加载中...