[zxspectrum] z88dk e artirmetica floating point... ho trovato un'anomalia?

  • From: Marcello Zaniboni <marcello.zaniboni@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Tue, 18 Oct 2005 18:23:04 +0200

Ciao a tutti
In previsione degli ultimi ritocchi al giochino AITTT, nel tempo perso
sto provando un po' a giocare con z88dk. Ho trovato però qualcosa di
strano: se compilo il seguente programmino

/*-------------------------------------------*/

#include <stdio.h>
#define MOVE_MEMORY 150

unsigned int a_part = 40;

int main(void) {
  float perc =
    (((float) a_part) / ((float) MOVE_MEMORY)) * 100.;
  printf("%f", perc);
  return 0;
}

/*-------------------------------------------*/

...innanzitutto, perché ottengo un minaccioso warning?
(sccz80:"test_fp.c" L:10 Warning:#27:Int constant in double
expression) Ho anche castato a float... che cosa c'è di male?

E poi, sebbene la compilazione non fallisca, ottengo un output che non
mi spiego:
100.000000
(Il compilatore MingW, che è un GCC per Win32, ce la fa benissimo e mi
stampa 26.666666)

Grazie,
Marcello

Other related posts: