为什么2a0 ++等于2a1,但是2e0 ++等于3?

时间:2013-11-11 15:22:11

标签: php

代码:

$a = "2c0";

for($i = 0; $i < 25; $i++) {
   print "$a ";
   $a++;
}

输出:

  

2C0   2C1   2C2   2C3   2C4   2C5   2C6   2C7   2C8   2C9   2D0   2D1   2D2   2D3   2D4   2D5   2D6   2D7   2D8   2D9   2E0   3   4   五   6

为什么,php?

3 个答案:

答案 0 :(得分:3)

2e0被解释为2 * 10^0(请参阅PHP exponentiation),其为2.因此下一个值为3.

答案 1 :(得分:1)

从手册:

  

PHP在处理字符变量而不是C的算术运算时遵循Perl的约定。例如,在PHP和Perl $ a ='Z'中; $ A ++;将$ a变为'AA',而在C a ='Z';一个++;将a转换为'['('Z'的ASCII值为90,'['的ASCII值为91)。请注意,字符变量可以递增但不递减,即使只支持纯ASCII字母和数字(a-z,A-Z和0-9)。递增/递减其他字符变量无效,原始字符串不变。

在“2c0”上使用++运算符会导致PHP增加字符串值,即“2c1”。 “2e0”被视为科学记数法,即2 * 10^0 = 2,因此递增得出3

答案 2 :(得分:0)

请参阅此博文:http://blog.rstack.cc/post/2a0_misunderstanding - 它解释了问题并链接了php文档以供参考。