shiyideliutang 发表于 2018-7-30 14:57:17

分解任意整数的每一位数值

今天做水仙花经典题的时候,写了一个函数是分解任意整数的每一位数值,
可是为啥位数较多(例如9876543210)的时候出现问题了呐,应该不是定义的类型不够大,
我已经定义为long型了,本人小白,还请大佬指教,小弟不胜感激。 /*********************************************************
*文件名称:分解多位数的各位
*文件标识:无
*功能实现:将任意多位数分解出各位数,并打印出来。
*当前版本:VC++6.0
*作    者:The Count of Monte Cristo
*完成日期:2018年7月30日
*********************************************************/
#include <iostream>
using namespace std;
const int n = 50;

int main()
{
        cout << "请输入任意一个数:";
        long num;
        cin >> num;
        long a;
        int i = 0;

        while (num)
        {
                a = num %10;
                num = num / 10;
                i++;
        }

        for (int j = 0; j < i; j++)
        {
                cout << "第" << j+1 << "位数是" << a << "\n";
        }

        system("pause");
        return 0;
}

BngThea 发表于 2018-7-30 15:02:09

试试long long

shiyideliutang 发表于 2018-7-30 15:09:40

BngThea 发表于 2018-7-30 15:02
试试long long

我的编译器不支持long long型,long可以输入最大9223372036854775807,远远大于10位数呀

shiyideliutang 发表于 2018-7-30 15:16:50

shiyideliutang 发表于 2018-7-30 15:09
我的编译器不支持long long型,long可以输入最大9223372036854775807,远远大于10位数呀

我用DEV C++运行试了试,long long确实可以了,但是为啥long不可以呐,long不是可以存储最大9223372036854775807的数吗???

BngThea 发表于 2018-7-30 15:26:44

shiyideliutang 发表于 2018-7-30 15:16
我用DEV C++运行试了试,long long确实可以了,但是为啥long不可以呐,long不是可以存储最大922337203685 ...

不同的机器long支持的位数并不相同

无符号整形 发表于 2018-7-30 20:11:28

假如可以用unsigned的话建议用unsigned,因为这个不用负数,另外假如你的环境是vs的话建议用__int64。

shiyideliutang 发表于 2018-7-31 08:43:48

BngThea 发表于 2018-7-30 15:26
不同的机器long支持的位数并不相同

嗯呐,明白了,多谢大佬的耐心回复。{:5_111:}

shiyideliutang 发表于 2018-7-31 08:44:28

无符号整形 发表于 2018-7-30 20:11
假如可以用unsigned的话建议用unsigned,因为这个不用负数,另外假如你的环境是vs的话建议用__int64。

多谢大佬的耐心回复。
页: [1]
查看完整版本: 分解任意整数的每一位数值