home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / BUGS128-C.ARC / BUGS128.C
Text File  |  2019-04-13  |  2KB  |  50 lines

  1. /**************************************************************
  2. * ╘HE FOLLOWING PROGRAM DEMOSTRATES TWO POSSIBLE BUGS WITHIN  *
  3. * THE ├-╨OWER 128 LANGUAGE. ╔ WOULD ASSUME THE BUGS ARE LOCAL *
  4. * TO THE COMPILER OR TRANSLATOR, BUT DON'T KNOW A LOT ABOUT   *
  5. * THE INTERNAL WORKINGS OF ├.                                 *
  6. *                                                             *
  7. *   ┬UG 1: NEGATIVE VALUES ASSIGNED TO STATIC FLOATING POINT  *
  8. *          VARIABLES WHEN DEFINED AREN'T STORED AS NEGATIVE   *
  9. *          VALUES.                                            *
  10. *                                                             *
  11. *   ┬UG 2: THE CONVERSION FROM A FLOAT TO AN INT DOESN'T WORK *
  12. *          IT DOES, HOWEVER, WORK FOR FLOAT TO UNSIGNED OR    *
  13. *          FLOAT TO INT IF THE (UNSIGNED) CAST IS USED.       *
  14. *          SINCE IT IS UNSIGNED, THOUGH NEGATIVE FLOATS       *
  15. *          CAUSE A RUNTIME ERROR.                             *
  16. **************************************************************/
  17.  
  18. MAIN()
  19.     STATIC FLOAT SF = -2.0;    /* ├OMPILER ┬╒╟? - ╠OSES NEGATIVE SIGN */
  20.     STATIC FLOAT LSF[] = █-1.,-2.,-3.▌;   /* SAME THING */
  21.     UNSIGNED U;
  22.     INT I;
  23.     FLOAT F;
  24.  
  25.     PRINTF("SF= %F\N",SF);
  26.     FOR (U=0; U<3; U++)
  27.         PRINTF("LSF[%D]=%F\N",U,LSF[U]);
  28.  
  29.     SF = -3.9;                  /* NOTE THAT THIS WORKS */
  30.     PRINTF("SF= %F\N",SF);
  31.  
  32.     F = 2.47;
  33.     I = F;          /* ├OMPILER ┬╒╟? - ├ONVERSION DOESN'T WORK */
  34.     PRINTF("I= %D\N",I);
  35.  
  36.     I = (INT) F;    /* STILL DOESN'T WORK */
  37.     PRINTF("I= %D\N",I);
  38.  
  39.     I = (UNSIGNED) F;   /* THIS WORKS FOR ONLY F > 0 */
  40.     PRINTF("I= %D\N",I);
  41.  
  42.     U = F;          /* THIS WORKS FOR ONLY F > 0 */
  43.     PRINTF("U= %U\N",U);
  44.  
  45.     F = -F;
  46.     I = (UNSIGNED) F;   /* THIS WON'T WORK NOW - STOPS W/RUNTIME ERROR */
  47.     PRINTF("I= %D\N",I);
  48.