Inteiros

Um inteiro é um número do conjunto Z = { ... , -2 , -1 , 0 , 1 , 2 , .. . } .

Veja também : Inteiros de tamanho arbitrário e Números de ponto flutuante

Sintaxe

Inteiros podem ser especificados em notação decimal ( base 10) , hexadecimal (base 16 ) ou octal (base 8) , opcionalmente precedido de sinal ( - ou + ) .

Para usar a notação octal , você precisa preceder o número com um 0 ( zero ) . Para utilizar a notação hexadecimal , preceda número com 0x .

Exemplo 7-1 . Literais inteiras

 
$a

 
=

 
1234

 
;

 
#

 
número

 
decimal

 
$a

 
=

 
-123

 
;

 
#

 
um

 
número

 
negativo

 
$a

 
=

 
0123

 
;

 
#

 
número

 
octal

 
(equivalente

 
a

 
83

 
em

 
decimal

 
)

 
$a

 
=

 
0x1A

 
;

 
#

 
número

 
hexadecimal

 
(equivalente

 
a

 
26

 
em

 
decimal

 
)



O tamanho de um inteiro é dependente de plataforma, sendo um numero aproximado a 2 bilhões o valor mais comum (número de 32 bits com sinal). O PHP não suporta inteiros não sinalizados.

Overflow de inteiros

Se você especifica um número além dos limites do tipo inteiro , ele será interpretado como um ponto flutuante . Assim , se você realizar uma operação que resulte em um número além dos limites do tipo inteiro , um ponto flutuante será retornado também .

 
$

 
numero_grande

 
=

 
2147483647

 
;

 
var_dump($numero_grande)

 
;

 
/

 
/

 
saida

 
:

 
int(2147483647

 
)

 
$numero_grande

 
=

 
2147483648

 
;

 
var_dump($numero_grande)

 
;

 
/

 
/

 
saida

 
:

 
float(2147483648

 
)

 
/

 
/

 
isto

 
também

 
é

 
permitido

 
para

 
especificação

 
de

 
números

 
hexadecimais

 
:

 
var_dump

 
(

 
0x80000000

 
)

 
;

 
/

 
/

 
saida

 
:

 
float(2147483648

 
)

 
$milhao

 
=

 
1000000

 
;

 
$numero_grande

 
=

 
50000

 
*

 
$milhao

 
;

 
var_dump($numero_grande)

 
;

 
/

 
/

 
saida

 
:

 
float(50000000000

 
)



Atenção

Infelizmente , um bug no PHP que faz que ele nem sempre trabalhe corretamente quando números negativos envolvidos . Por exemplo , quando você faz -50000 * $milhao , o resultado será -429496728 . Entretanto , quando ambos os operadores são positivos , isso não ocorre .

Isto foi resolvido no PHP 4.1.0 .



Não operador de divisão inteira no PHP . 1 / 2 retorna o ponto flutuante 0.5 .

 
var_dump(

 
25

 
/

 
7

 
)

 
;

 
/

 
/

 
saida

 
:

 
float(3.5714285714286

 
)





Convertendo para inteiro

Para converter explicitamente um valor para inteiro , utilize-se dos modificadores ( int ) ou (integer ) . Entretanto , na maioria dos casos , você não precisa utilizar o modificador , desde que qualquer valor será automaticamente convertido se um operador , função ou estrutura de controle requerer um argumento inteiro .

Veja também Manipulação de tipos .

de booleanos

FALSE será retornado como 0 ( zero) , e TRUE como 1 (um ) .

De números de ponto flutuante

Quando convertendo de números de ponto flutuante para inteiros , o número será truncado .

Se o número convertido estiver além dos limites de um inteiro ( usualmente + / - 2.15e+9 = 2^31 ) , o resultado é indefinido , mesmo porque o ponto flutuante não tem a mesma precisão para fornecer um resultado inteiro exato . Não se preocupe , pois nenhum aviso será emitido neste caso !

Atenção

Nunca modifique uma fração desconhecida para inteiro , porque isto pode fornecer resultados inesperados as vezes .

 
echo

 
(

 
int

 
)

 
(

 
(0.1+0.7

 
)

 
*

 
10

 
)

 
;

 
/

 
/

 
imprime

 
7

 
!



Para maiores informações, veja o alerta sobre a precisão de número flutuante. .