在C ++中查找带零的整数的长度?

时间:2013-09-25 21:34:55

标签: c++ integer

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

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
  • intLength(100)==> 3
  • intLength(01)==> 1预期:2
  • intLength(0100)==> 2预期:4

3 个答案:

答案 0 :(得分:6)

整数没有前导零,它们具有固定大小。如果要显示任何这些值,您会看到所有前导零都被删除,因为首先无法知道它们是否在那里。

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

整数不会以前面的零存储,因此无法执行此操作。但是,您可以计算int的字符串表示形式中前面的零个数。