0

我正在使用PHP 7.0.2

在整数手册的一处,我看到了以下语句:

整数可以用十进制(以 10 为基数)、十六进制(以 16 为基数)、八进制(以 8 为基数)或二进制(以 2 为基数)表示法指定,可以在前面加上符号(- 或 +)。

在手册的一个地方,我看到了以下矛盾的陈述:

PHP 不支持无符号整数。

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

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

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

4

3 回答 3

1

为了澄清这一点,就像整数浮点数是不同的数据类型一样,无符号整数实际上是与整数不同的数据类型。标准整数通常是 32 位(这在不同的编程语言之间可能会有所不同)并且可以从大约 -20 亿到 +20 亿,而无符号整数可以从 0 到大约 +40 亿。您还可以有越来越小的整数,它们的最大值越来越低,也可以是无符号的,保持相同数量的不同选项,但只转换为正数。

这与数据库键字段等内容相关,其中无符号整数非常适合自动增量身份类型字段,但在 php.ini 中将不被正确支持。它变得复杂,所以如果您只是使用 php,请不要对此感到压力,如果您将 php 与数据库提供程序一起使用,最好避免在数据中使用无符号整数,因为 php 会中断或开始返回负数与实际存储的正值不同的值。

就是那种让我眼睛微微抽搐的烦恼。

于 2021-11-07T20:36:00.837 回答
0

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

于 2017-12-29T17:55:54.577 回答
0

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

扩展整数指南中的示例。

$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)
于 2017-12-29T18:01:05.150 回答