PDA

View Full Version : [C] Libreria Math. funzioni e tipi


ErodeGrigo
20-01-2011, 13:03
Piccolo e stupido dubbio... ;)

Per le funzioni in Math.h, ad esempio la fabs, esistono 3 versioni:

Possibilità 1:

1) fabs che accetta e restituisce un qualsiasi tipo floating point

2) fabsf che è accetta e restituisce solo float

3) fabsl che accetta e restituisce solo long double

Possibilità 2:

1) fabs che accetta e restituisce solo double

2) come prima

3) come prima


Secondo me dovrebbe essere la possibilità 1, ma vorrei avere conferma....

Bye.

wingman87
20-01-2011, 14:45
http://www.cplusplus.com/reference/clibrary/cmath/fabs/

ErodeGrigo
20-01-2011, 15:37
http://www.cplusplus.com/reference/clibrary/cmath/fabs/

Thnks per il link.....

Allora fabs prende e restituisce un double

Però esistono sempre le versioni float e long double? ovvero fabsf e fabsl?

Evidentemente il mio ambiente di sviluppo mi suggerisce i prototipi c++, anche se stranamente io includo math.h e salvo con estensione .c

C'è un link dove posso vedere i prototipi delle funzioni di libreria direttamente in C?

Bye.

wingman87
20-01-2011, 16:02
Il sito che ho linkato contiene tutta la libreria standard c e c++.
Riguardo fabs credo che tu abbia letto male:

double fabs ( double x );
float fabs ( float x );
long double fabs ( long double x );

Ci sono tre overload della stessa funzione. A seconda del tipo passato quello stesso tipo viene restituito.

ErodeGrigo
20-01-2011, 16:36
Il sito che ho linkato contiene tutta la libreria standard c e c++.
Riguardo fabs credo che tu abbia letto male:

double fabs ( double x );
float fabs ( float x );
long double fabs ( long double x );

Ci sono tre overload della stessa funzione. A seconda del tipo passato quello stesso tipo viene restituito.

Io ho letto: In C, only the double version of this function exists with this name.

E appunto io sto programmando in C.

Bye.

wingman87
20-01-2011, 16:47
Hai proprio ragione, ho letto male io.

Non è tutto: non mi ricordavo che in C l'overload non esiste proprio.

ErodeGrigo
20-01-2011, 16:55
Hai proprio ragione, ho letto male io.

Non è tutto: non mi ricordavo che in C l'overload non esiste proprio.

Ok....

Quindi fabs vale prende e restituisce esclusivamente i double

Se uno vuole le versioni float e long double deve postporre f o l al nome della funzione.

Però mi sa che questa cosa non funziona per tutte le funzioni, ovvero potrebbero esistere funzioni che ammettono solo double o solo float...

Quindi mi serve un sito che mi fornisca i prototipi con tutti i tipi supportati....

Oppure dovrei far capire a devc++ di darmi solo i suggerimenti per l'ANSI C 99

Gazie per l'aiuto...

Bye.