为什么我的代码从 10 位数字开始不起作用C++

Why does my code not work starting from 10 digits in C++?

本文关键字:数字 开始 不起作用 C++ 我的 代码 为什么      更新时间:2023-10-16

此代码计算我们输入的数字的位数,具体取决于如果将一个数字除以多一位数字的数字,则始终得到小于 1;程序仍然会除以,直到它小于 1。我试图num定义为长整数。

#include <iostream>
#include <cmath>
using namespace std;
int main () {
int num,n,dev;
dev = 10;
n = 1;
cin >> num;
double dn = num / dev;
if (dn < 1){
        cout << n;
}
if (dn >= 1){
    while (dn >= 1){
        dev *= 10;
        dn = num / dev;
        n++;
    }
    cout << n;
}
return 0;
}

我希望它适用于所有数字。

更改

int num,n,dev;

long long num,n,dev;

因为 int 可以拥有的最大数字是 2,147,483,647