Post

Visualizzazione dei post da Luglio, 2017

Translate

Valore minimo di una costante intera in PHP

In PHP il minimo intero a 64 bit vale esattamente -9223372036854775808 (costante PHP_INT_MIN), che equivale a -2^63 o anche 1 << 63. La sua rappresentazione binaria è la seguente: 1000000000000000000000000000000000000000000000000000000000000000 L'intero più grande è 9223372036854775807 (costante PHP_INT_MAX) equivalente a 2^63-1 o anche 1 << 63 - 1. Questa è la sua rappresentazione binaria: 0111111111111111111111111111111111111111111111111111111111111111 Detto questo, la seguente assegnazione dovrebbe create una variable di tipo int , pari al valore specificato: $x = -9223372036854775808; Invece $x sarà un  double , anziché un  int . Infatti il risultato di: var_dump($x); Sarà: double(-9.2233720368548E+18) La costante intera assegnata a $x è stata convertita in double , perché? La motivazione sta nel fatto che l'operatore unario "-" è applicato subito dopo che la costante intera è stata letta. Dato che la costa