#define ... warum falsches Ergebnis mit Konstanter als Nenner
-
#define BYTES_FOR_XYZ 2*sizeof(double)+sizeof(float) ... int main() { int t = 80/BYTES_FOR_XYZ; int tB = BYTES_FOR_XYZ; int test = 80/tB; }
So: warum bekomme ich für t = 24 das falsche
und erst für test = 4 das richtige ergebnis???
Dürfen #define-Konstanten nicht im Nenner stehen???
-
ga_un schrieb:
Dürfen #define-Konstanten nicht im Nenner stehen???
Es gibt keine #define-Konstanten, es gibt nur Makros. Der Präprozessor ersetzt jedes Vorkommen eines Makros durch seine Definition. Dh deine erste Zeile sähe nach dem Präprozessorlauf so aus:
int t = 80/2*sizeof(double)+sizeof(float);
Ich hoffe es ist dir jetzt klar, was du tun musst.
-
Und es gibt noch einen Hinwies. Es waere besser,wenn du den Compiler dem Präprozessor vorziehen würdest:
const size_t BYTES_FOR_XYZ = 2*sizeof(double)+sizeof(float);
So wird das Symbol dem Compiler bekannt und ausserdem brauchst du nicht aufzupassen um sicherzustellen, dass das Macro korrekt geklammert ist.