strlen如何处理数字?

4

我正在尝试弄清楚 strlen() 如何找出数字的长度。当我尝试以下操作时:

echo strlen(00000000000000000000000000000000);

当我尝试时,它输出1,但是

echo strlen(11111111111111111111111111111111111111111111111111111111);

它输出了19。有时它能够像这个例子一样正常工作:

echo strlen(19);

strlen()输出2。 我知道可以使用以下方法:

echo strlen('00000000000000000000000000000000');

它将输出32,但我想弄清楚它如何与数字一起使用。


3
在基础数学中,你学过000000 = 0,但111111 !=1,因此...你可以通过strlen((string)000000000000000000000000);强制使它成立。 - M A SIDDIQUI
1
好的,但是 111111111111111111111111111111111111111111111111111111111111111111111111 不等于19。 - Qeaxe
1
长度为61,但输出为19。 - Qeaxe
2个回答

3
因为strlen()给出的是字符串长度,00000000000000000000000000只有在用引号"00000000000000000000000000"或'00000000000000000000000000'括起来时才称为字符串。
那么为什么strlen(00000000000000000000000000000000)输出1、而strlen(11111111111111111111111111111111111111111111111111111111)输出19呢?
因为整数00000000000000000000000000000000等于0,这意味着其长度为1。而11111111111111111111111111111111111111111111111111111111不等于1,而是11111111111111111111111111111111111111111111111111111111,因此它输出32。
欲了解更多信息,请查看strlen()文档。

3
需要翻译的内容:it should be noted that the bunch of 1s has a length of 19 because it's too large to fit in an int, so it's evaluated as float and then cast to the string "1.1111111111111E+71"。请注意,“一串1”的长度为19,因为它太大了,无法适应整数类型(int),所以会被计算为浮点型(float),然后转换为字符串“1.1111111111111E+71”。 - Franz Gleichmann

3

尝试执行echo 11111111111111111111,它将回显1.1111111111111E+19,这是19个字符,因此长度为19。但是,如果您尝试执行echo 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,它将输出1.1111111111111E+100,如果您尝试获取其长度,它将有20个字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接