fork(2) download
  1. #include <stdio.h>
  2.  
  3. #define COUNT(type, result_m, result_e) do { \
  4.   type x = 1, exp; \
  5.   unsigned res, e; \
  6.   for (res=0; x!=0; ++res) x/=2.; \
  7.   for (exp=1,e=0; exp*2<res; ++e) exp*=2; \
  8.   *result_e = e+1; \
  9.   *result_m = res-exp+1; \
  10. } while(0)
  11.  
  12. int main(void)
  13. {
  14. unsigned f_m, f_e, d_m, d_e, ld_m, ld_e;
  15.  
  16. COUNT(float, &f_m, &f_e);
  17. COUNT(double, &d_m, &d_e);
  18. COUNT(long double, &ld_m, &ld_e);
  19.  
  20. printf(" S M E SZ\n");
  21. printf("float: 1 %2u %2u %3u\n", f_m, f_e, 8 * sizeof(float));
  22. printf("double: 1 %2u %2u %3u\n", d_m, d_e, 8 * sizeof(double));
  23. printf("long double: 1 %2u %2u %3u\n", ld_m, ld_e, 8 * sizeof(long double));
  24. }
  25.  
Success #stdin #stdout 0s 9416KB
stdin
Standard input is empty
stdout
              S   M   E   SZ
float:        1  23   8   32
double:       1  52  11   64
long double:  1  63  15  128