fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int max_int(){
  6. int t1=1,t2=1,d=1,p;
  7. for(;;){
  8. t2=t1+d;
  9. if (t2-t1==t2 || t2<0){
  10. d/=2;
  11. continue;
  12. }
  13. if (t1==t2)
  14. return t2;
  15. if (t2>0){
  16. p=d*2;
  17. if (p>0 && p-d!=p)
  18. d=p;
  19. t1=t2;
  20. continue;
  21. }
  22. }
  23. }
  24.  
  25.  
  26. int min_int(){
  27. int t1=-1,t2=-1,d=1,p;
  28. for(;;){
  29. t2=t1-d;
  30. if (t2+t1==t2 || t2>0){
  31. d/=2;
  32. continue;
  33. }
  34. if (t1==t2)
  35. return t2; if (t2<0){
  36. p=d*2;
  37. if (p>0 && p-d!=p)
  38. d=p;
  39. t1=t2;
  40. continue;
  41. }
  42. }
  43. }
  44.  
  45. float max_float(){
  46. float t1=1,t2=1,d=1,p;
  47. for(;;){
  48. t2=t1+d;
  49. if (t2-t1==t2 || t2<0){
  50. d/=2;
  51. continue;
  52. }
  53. if (t1==t2)
  54. return t2;
  55. if (t2>0){
  56. p=d*2;
  57. if (p>0 && p-d!=p)
  58. d=p;
  59. t1=t2;
  60. continue;
  61. }
  62. }
  63. }
  64.  
  65.  
  66. float min_float(){
  67. float t1=-1,t2=-1,d=1,p;
  68. for(;;){
  69. t2=t1-d;
  70. if (t2+t1==t2 || t2>0){
  71. d/=2;
  72. continue;
  73. }
  74. if (t1==t2)
  75. return t2; if (t2<0){
  76. p=d*2;
  77. if (p>0 && p-d!=p)
  78. d=p;
  79. t1=t2;
  80. continue;
  81. }
  82. }
  83. }
  84.  
  85.  
  86. double max_double(){
  87. double t1=1,t2=1,d=1,p;
  88. for(;;){
  89. t2=t1+d;
  90. if (t2-t1==t2 || t2<0){
  91. d/=2;
  92. continue;
  93. }
  94. if (t1==t2)
  95. return t2;
  96. if (t2>0){
  97. p=d*2;
  98. if (p>0 && p-d!=p)
  99. d=p;
  100. t1=t2;
  101. continue;
  102. }
  103. }
  104. }
  105.  
  106.  
  107. double min_double(){
  108. double t1=-1,t2=-1,d=1,p;
  109. for(;;){
  110. t2=t1-d;
  111. if (t2+t1==t2 || t2>0){
  112. d/=2;
  113. continue;
  114. }
  115. if (t1==t2)
  116. return t2; if (t2<0){
  117. p=d*2;
  118. if (p>0 && p-d!=p)
  119. d=p;
  120. t1=t2;
  121. continue;
  122. }
  123. }
  124. }
  125.  
  126.  
  127. long double max_extended(){
  128. long double t1=1,t2=1,d=1,p;
  129. for(;;){
  130. t2=t1+d;
  131. if (t2-t1==t2 || t2<0){
  132. d/=2;
  133. continue;
  134. }
  135. if (t1==t2)
  136. return t2;
  137. if (t2>0){
  138. p=d*2;
  139. if (p>0 && p-d!=p)
  140. d=p;
  141. t1=t2;
  142. continue;
  143. }
  144. }
  145. }
  146.  
  147.  
  148. long double min_extended(){
  149. long double t1=-1,t2=-1,d=1,p;
  150. for(;;){
  151. t2=t1-d;
  152. if (t2+t1==t2 || t2>0){
  153. d/=2;
  154. continue;
  155. }
  156. if (t1==t2)
  157. return t2; if (t2<0){
  158. p=d*2;
  159. if (p>0 && p-d!=p)
  160. d=p;
  161. t1=t2;
  162. continue;
  163. }
  164. }
  165. }
  166.  
  167.  
  168.  
  169.  
  170. int main()
  171. {
  172. printf("int %d ... %d\n",max_int(),min_int());
  173. printf("float %e ... %e\n",max_float(),min_float());
  174. printf("double %e ... %e\n",max_double(),min_double());
  175. printf("long double %Le ... %Le\n",max_extended(),min_extended());
  176.  
  177.  
  178. return 0;
  179. }
  180.  
Success #stdin #stdout 0s 4256KB
stdin
Standard input is empty
stdout
int 2147483647 ... -2147483648
float 3.402823e+38 ... -3.402823e+38
double 1.797693e+308 ... -1.797693e+308
long double 1.189731e+4932 ... -1.189731e+4932