PHP手册说整数可以用十进制(基数10),十六进制(基数16),八进制(基数8)或二进制(基数2)表示,可选地以符号( - 或+)开头。
表示整数可以是十进制,十六进制,八进制和二进制。
如果我echo 014;
首先转换为基数10并输出给12
那么简单。
为什么它自动转换为base 10,但另一方面手册说整数也可以用八进制指定。
也看一下类型转换的例子var_dump((int) 014)
它输出int 12
。这次它转换为基数10,但是手动说八进制本身也是一个整数。
问题在于手动语言。它应该说类型转换为整数意味着(int)
是十进制整数转换,而不是说它会将其转换为整数。 整数和十进制整数之间存在差异。
答案 0 :(得分:2)
>表示整数可以是十进制,十六进制,八进制和二进制。
不,这意味着程序员可以用十进制,八进制或二进制指定整数。你必须明白,在封面下,计算机只处理二进制,因此表达十进制,十六进制,八进制或二进制数字的能力就是程序员的便利。它对计算机没有任何影响,因为它只看到二进制文件。
您输入 014 =>计算机看到 00001100
您输入 12 =>计算机看到 00001100
您输入 0xc =>计算机看到 00001100
计算机无法区分不同格式。
>为什么它自动转换为基数10,但另一方面手册说整数也可以用八进制指定。
因为如果你检查PHP documentation for echo,你会发现它只接受一个字符串参数。如果你传递其他类型,它必须想办法隐式地将它们转换为字符串。依赖隐式类型转换不是一个好主意,你会遇到像你遇到的问题。尝试始终明确施放。例如,如果要将十进制数回显为十六进制,请执行以下操作:
echo(dechex(1234));