无符号函数,用于返回使用任何数字的数字

Unsigned function to return digits using any numbers

本文关键字:数字 任何 返回 函数 用于 无符号      更新时间:2023-10-16

我正在做一个练习,我必须编写一个无符号的编程 函数在C++ --- 函数返回了位数 在 num 中,并且必须处理任何数字。

The issue  --- when I do unsigned num is greater than 10 digits, it still 
shows 10 as the answer.  what am I doing wrong?

unsigned numDigits(unsigned num)  
{
if (num == 0)
return 0; 
return 1 + numDigits(num / 10); 
return (num);
}
int main()
{
unsigned num = 12345678901;
cout << "Number of Digits: " << numDigits(num);
}

无符号大小为:

0 to 65,535 or 
0 to 4,294,967,295 (10 digits)

因此,请将您的功能更改为:

unsigned numDigits(long long unsigned num)

您问题的作弊解决方案还包括:

std::string dig = std::to_string(num);
std::cout << dig.size();
 unsigned getNumDigits(long long unsigned num)
 {
      if (num < 9 )
          return 1;
       return 1 + getNumDigits(num / 10 );
 }

@ram,谢谢指出。最大保证无符号值为 65535 。容纳超过此值的值将需要更大的(值容纳)类型。最大无符号值是可能的长长无符号。值 0 也表示 1 位数字,因此与 9 进行比较。

相关文章: