语句“PHP不支持无符号整数”实际上意味着什么?

问题描述 投票:0回答:2

我使用的是PHP 7.0.2

the manual关于整数的一个地方,我看到了以下声明:

整数可以用十进制(基数10),十六进制(基数16),八进制(基数8)或二进制(基数2)表示,可选地以符号( - 或+)开头。

在手册的一个地方,我在下面看到了矛盾的说法:

PHP不支持无符号整数。

由于这两句话,我感到困惑。在一个地方,它表示一个整数可以选择前面有一个符号,这意味着每当我使用任何整数时,在它前面加上一个符号( - 或+)或不符号将是我的选择。

同时它说PHP不支持无符号整数。

那么,它是否说每当我使用任何整数而没有在其前面加上符号(+或 - )时它不会被视为PHP中的合法整数?

php types integer unsigned-integer signed-integer
2个回答
0
投票

这只是意味着每个整数都是有符号的,你不能创建无符号整数。因此,如果你想使用比PHP_INT_MAX更大的东西,你必须使用字符串(或像bcmath这样的库)来解决这个问题。


0
投票

用于表示正整数的+前缀是可选的,正整数可以用无符号或+表示。负整数只能用 - 表示。

扩展示例from the integer guide

$a = 123; // decimal number (123)
$a = +123; // decimal number (123)
$a = -123; // a negative decimal number (-123)
$a = 0123; // octal number (equivalent to 83 decimal)
$a = +0123; // octal number (equivalent to 83 decimal)
$a = -0123; // octal number (equivalent to -83 decimal)
$a = 0x1A; // hexadecimal number (equivalent to 26 decimal)
$a = +0x1A; // hexadecimal number (equivalent to 26 decimal)
$a = -0x1A; // hexadecimal number (equivalent to -26 decimal)
$a = 0b11111111; // binary number (equivalent to 255 decimal)
$a = +0b11111111; // binary number (equivalent to 255 decimal)
$a = -0b11111111; // binary number (equivalent to -255 decimal)
© www.soinside.com 2019 - 2024. All rights reserved.