octal_64bit.phpt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. --TEST--
  2. Octal integer strings (64bit)
  3. --SKIPIF--
  4. <?php
  5. if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only");
  6. ?>
  7. --FILE--
  8. <?php
  9. /* Using octal prefix notation lowercase */
  10. /* Maximum value representable as integer */
  11. $octal = 0o777777777777777777777;
  12. var_dump($octal);
  13. var_dump(PHP_INT_MAX);
  14. /* *technically* this should work but treat this as a degenerate case */
  15. $octal = 0o1000000000000000000000;
  16. var_dump($octal);
  17. /* Floating number */
  18. $octal = 0o45734321536435450000000000;
  19. var_dump($octal);
  20. /* Integer */
  21. $octal = 0o16;
  22. var_dump($octal);
  23. /* underscore separator */
  24. $octal = 0o1_6;
  25. var_dump($octal);
  26. /* Ignore leading 0 and _ */
  27. $octal = 0o0_016;
  28. var_dump($octal);
  29. $octal = 0o0_16;
  30. var_dump($octal);
  31. /* Overflow to infinity */
  32. $octal = 0o77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777;
  33. var_dump($octal);
  34. /* Using octal prefix notation uppercase */
  35. /* Maximum value representable as integer */
  36. $octal = 0O777777777777777777777;
  37. var_dump($octal);
  38. var_dump(PHP_INT_MAX);
  39. /* *technically* this should work but treat this as a degenerate case */
  40. $octal = 0O1000000000000000000000;
  41. var_dump($octal);
  42. /* Floating number */
  43. $octal = 0O45734321536435450000000000;
  44. var_dump($octal);
  45. /* Integer */
  46. $octal = 0O16;
  47. var_dump($octal);
  48. /* underscore separator */
  49. $octal = 0O1_6;
  50. var_dump($octal);
  51. /* Ignore leading 0 and _ */
  52. $octal = 0O0_016;
  53. var_dump($octal);
  54. $octal = 0O0_16;
  55. var_dump($octal);
  56. /* Overflow to infinity */
  57. $octal = 0O77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777;
  58. var_dump($octal);
  59. /* Using no dedicated prefix */
  60. /* Maximum value representable as integer */
  61. $octal = 0777777777777777777777;
  62. var_dump($octal);
  63. var_dump(PHP_INT_MAX);
  64. /* *technically* this should work but treat this as a degenerate case */
  65. $octal = 01000000000000000000000;
  66. var_dump($octal);
  67. /* Floating number */
  68. $octal = 045734321536435450000000000;
  69. var_dump($octal);
  70. /* Integer */
  71. $octal = 016;
  72. var_dump($octal);
  73. /* underscore separator */
  74. $octal = 01_6;
  75. var_dump($octal);
  76. /* Ignore leading 0 and _ */
  77. $octal = 00_016;
  78. var_dump($octal);
  79. $octal = 0_16;
  80. var_dump($octal);
  81. /* Overflow to infinity */
  82. $octal = 077777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777;
  83. var_dump($octal);
  84. ?>
  85. --EXPECT--
  86. int(9223372036854775807)
  87. int(9223372036854775807)
  88. float(9.223372036854776E+18)
  89. float(1.7912166229916324E+23)
  90. int(14)
  91. int(14)
  92. int(14)
  93. int(14)
  94. float(INF)
  95. int(9223372036854775807)
  96. int(9223372036854775807)
  97. float(9.223372036854776E+18)
  98. float(1.7912166229916324E+23)
  99. int(14)
  100. int(14)
  101. int(14)
  102. int(14)
  103. float(INF)
  104. int(9223372036854775807)
  105. int(9223372036854775807)
  106. float(9.223372036854776E+18)
  107. float(1.7912166229916324E+23)
  108. int(14)
  109. int(14)
  110. int(14)
  111. int(14)
  112. float(INF)