Je souhaitais simplement tester un débordement sur un entier, comme en C (enfin, si c'était juste un entier supérieur à un entier). Quand j'ai regardé pour voir si PHP faisait vraiment ce que je lui ai dit, il semble qu'il échoue pour une raison quelconque. Voici mes tests du problème:PHP: sur le système 32 bits INT_MAX affiche faux?
define('INT_MAX', 0x7FFFFFFF);
print "In decimal: " . hexdec(INT_MAX) . "<br/>";
print "In decimal: " . hexdec(0x7FFFFFFE) . "<br/>"; //Under int_max
print "In hex: " . dechex(hexdec(INT_MAX)) . "<br/>";
print "Float: " . ((bool)is_float(INT_MAX)?'true':'false') . "<br/>";
Résultats être:
en décimal: 142929835591
en décimal: 142929835590
En hex: 47483647
Float: faux
Comme je l'ai vu sur le manuel, il va lancer pour flotter si renversé, mais il ne semble pas et est nettement plus élevé. Suis-je fou et manquant quelque chose ici, ou y a-t-il un problème étrange que je devrais vraiment avoir à connaître lorsque je travaille avec hexidecimal en PHP?
Je ne savais pas que la notation hexadécimale ne sont stockées en décimal à la fin. Je ne faisais que reconvertir incorrectement l'hexagone, merci! – John