1

我知道我可以做到:

n = floor(log10(i)) + 1;

或者我可以做一个快速循环:

while(i) {
  n++;
  i/=10;
}

有没有比复杂的数学运算或循环更好的方法来实现目标?例如:如果 i = 1234,则 n = 4。

4

2 回答 2

1

我所知道的最短方法(不是计算,只是在打字方面)是调用snprintf(3)

int n = snprintf(NULL, 0, "%d", i);
于 2013-10-09T22:27:57.027 回答
0

将其转换为字符串(itoa)并计算字符数?(虽然可能不是最好的性能)

于 2013-10-09T22:27:16.993 回答