ich einen sehr einfachen Code hergestellt, die die Werte einer Funktion berechnet: Variable im Header von #define definiert wird nicht durch den Code festgelegt
#define MIN 0.00001
#define MAX 1
#define MAXP 10000
double func_log(double x)
{
double r=RPWN;
printf(" MAXP = %e \n",MAXP);
printf(" MIN = %e \n",MIN);
printf(" MAX = %e \n",MAX);
double y;
if (x>r || x==0) return(0.0);
else {
y = r+((r*r)/(2.*x)-x/2.)*log((1+r/x)/(r/x-1));
}
return y;
}
Das fonction in einem file.c ist, die ist mit anderen Quelldateien kompiliert. Das Problem ist, dass MAXP
nicht auf seinen Wert festgelegt werden kann. Hier ist, was ich bekomme, wenn ich fragen, die Werte von MIN
auszudrucken, MAXP
und MAXP
:
MAXP = 4.940656e-324
MIN = 1.000000e-05
MAX = 1.000000e+00
Ich verstehe wirklich nicht, warum ich 4.940656e-324
für MAXP
bekommen, ich hatte noch nie eine solche Frage. Auch wenn ich #define MAXP 10000.
schreibe, bekomme ich dann MAXP = 1.000000e+04
. Ich kompiliere mit gcc, hat jemand eine Ahnung?
MAX und MAXP sind integ er Konstanten werden als Doppel gedruckt. Glück gehört nicht zu den Möglichkeiten. Fügen Sie Dezimalstellen zu den Definitionen hinzu. –
Compiler Warnungen aktivieren. Abstimmung, um dies als einfacher Tippfehler zu schließen. – Lundin
@Lundin nicht unbedingt ein Tippfehler, die Frage ist in Ordnung. Für einen Anfänger kann dieses Verhalten tatsächlich seltsam aussehen –