字符串转数字出现乱码的问题

我的代码只能保证小于19位 才能成功转换

#include <iostream>
using namespace std;
long long int tonum(char ch[])
{
    long long int i, clength, num=0;
    for (i = 0; ch[i] != '\0'; i++)
    {
    }
    clength = i; 
    cout<<clength<<endl;
    for (i = 0; i < clength; i++)
    {
        num = num * 10 + (ch[i] - '0');
    }
    return num;
}
int main()
{
    char ch[100];
    cin >> ch;
    long long int num;
    num = tonum(ch);
    cout << num;
}

img

超过19位,long long也扛不住啊,改成double类型吧,不然就要搞大整数处理了
long long最大值只有9.2*10的19次方

数据溢出
你可以定义long long数组,自己计算保存对应得数字

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632