# C 程序：计算整数中的位数

> 原文： [https://www.programiz.com/c-programming/examples/digits-count](https://www.programiz.com/c-programming/examples/digits-count)

#### 在此示例中，您将学习计算用户输入的整数中的位数。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 编程运算符](/c-programming/c-operators)
*   [C `while`和`do...while`循环](/c-programming/c-do-while-loops)

* * *

该程序从用户处获取一个整数并计算位数。 例如：如果用户输入 2319，则程序的输出将为 4。

* * *

## 计算位数的程序

```c
#include <stdio.h>
int main() {
    long long n;
    int count = 0;
    printf("Enter an integer: ");
    scanf("%lld", &n);

    // iterate until n becomes 0
    // remove last digit from n in each iteration
    // increase count by 1 in each iteration
    while (n != 0) {
        n /= 10;     // n = n/10
        ++count;
    }

    printf("Number of digits: %d", count);
} 
```

**输出**

```c
Enter an integer: 3452
Number of digits: 4 
```

* * *

用户输入的整数存储在变量`n`中。 然后，迭代`while` [循环](https://www.programiz.com/c-programming/c-do-while-loops)，直到将测试表达式`n != 0`求值为 0（假）。

*   第一次迭代后，`n`的值为 345，`count`增为 1。
*   在第二次迭代后，`n`的值为 34，`count`递增为 2。
*   在第三次迭代后，`n`的值为 3，`count`增至 3。
*   在第四次迭代之后，`n`的值将为 0，并且`count`增至 4。
*   然后，将循环的测试表达式求值为`false`，然后循环终止。