1

我想找到前面有零的整数的长度

int intLength(int num)
{
    int l = 0;
    while(num>0)
    {
        num = num/10;
        l++;
    }
    return l;
}
  • intLength(1) ==> 1
  • intLength(0) ==> 0 预期:1
  • intLength(10) ==> 2
  • 整数长度(100)==> 3
  • intLength(01) ==> 1 预期:2
  • intLength(0100) ==> 2 预期:4
4

3 回答 3

6

整数没有前导零,它们的大小是固定的。如果您要显示这些值中的任何一个,您会看到所有前导零都被删除,因为没有办法知道它们一开始就在那里。

此外,带有前导零的整数文字是八进制常量,而不是十进制常量。您会看到0100显示为 64,而不是 100。

如果前导零对您的应用程序很重要,则需要将值保留为字符串而不是整数。

于 2013-09-25T21:40:00.543 回答
2

您正在混淆数字的字符串表示形式及其数字表示形式。对于 01,这可以写成 1。此外,在 C++ 中,以零为前缀的数字使其成为八进制,因此您的最后一个示例 0100 是基数为 10 的 64,因此它返回 2。如果您想要字符串的长度数字的表示,看看将数字转换为字符串。

于 2013-09-25T21:39:04.953 回答
1

整数不会与前面的零一起存储,因此无法做到这一点。但是,您可以计算 int 的字符串表示形式中前面零的数量。

于 2013-09-25T21:38:42.747 回答