home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progc / fixed300.arj / SLZ3BUG4.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1991-05-05  |  1.1 KB  |  74 lines

  1. #if 0
  2. From: Scott Ladd
  3. Subject: operator float() bug
  4. Status: Fixed in 3.0b4
  5. #endif
  6.  
  7. //      Compile with ZTC SLZ3BUG4
  8. //
  9. //      program prints an incorrect result for i
  10. //
  11. //      correct output should be:
  12. //          i = 1
  13. //
  14. //      actual output is
  15. //          i = 6.682054e+008
  16. //
  17. //      program works with ZTC 2.18
  18.  
  19.  
  20.  
  21. #include <stdio.h>
  22.  
  23. class integer
  24.     {
  25.     private:
  26.         long value;
  27.     public:
  28.         integer();
  29.         integer(const float & f);
  30.         integer(const integer & i);
  31.  
  32.         integer operator = (const integer & i);
  33.  
  34.         operator float();
  35.     };
  36.  
  37. integer::integer()
  38.     {
  39.     value = 0l;
  40.     }
  41.  
  42. integer::integer(const float & f)
  43.     {
  44.     value = long(f);
  45.     }
  46.  
  47. integer::integer(const integer & i)
  48.     {
  49.     value = i.value;
  50.     }
  51.  
  52. integer integer::operator = (const integer & i)
  53.     {
  54.     value = i.value;
  55.  
  56.     return *this;
  57.     }
  58.  
  59. integer::operator float()
  60.     {
  61.     return float(value);
  62.     }
  63.  
  64. integer i;
  65.  
  66. int main()
  67.     {
  68.     i = 1.0f;
  69.  
  70.     printf("\ni = %g\n",float(i));
  71.  
  72.     return 0;
  73.     }
  74.