Warnung von Funktion eleminieren
-
Hallo Zusammen,
ich habe folgende kleine Funktion:float Generate_Random_Num_UnitPart(float End_Unit) { struct timeval time; gettimeofday(&time,NULL); srand( time.tv_sec*1000000.0 + time.tv_usec); int Int_End, x; Int_End = (int) End_Unit; x=rand() % Int_End ; return (float) x; }
die mir diese Warnung ausgibt:
warning: conversion to ‘double’ from ‘__suseconds_t’ may alter its value [-Wconversion] srand( time.tv_sec*1000000.0 + time.tv_usec); ^ warning: conversion to ‘unsigned int’ from ‘double’ may alter its value [-Wfloat-conversion] srand( time.tv_sec*1000000.0 + time.tv_usec);
Wie kann ich die Warnung vermeiden?!?
Vielen Dank im Voraus.
Der lion1981
-
1000000.0 ist vom Typ double, ersetze sowas in Integer-Kontexten durch Literale mit gleichrangigem Typ, also
1000000 1000000L 1000000LL 1000000UL 1000000ULL
was aber natürlich auch zu Überläufen führen kann, die du kontrollieren solltest.
-
srand
ruft man nur einmal im Programm auf.
Z.B. am Anfang dermain
.time.tv_usec
wird i.A. auch nicht in Einerschritten verändert.Und wenn du eine Fließkommazahl haben möchtest, dann nutze den ganzen Bereich.
return rand() * End_Unit / (RAND_MAX + 1);