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 1000000ULLwas aber natürlich auch zu Überläufen führen kann, die du kontrollieren solltest.
-
srandruft man nur einmal im Programm auf.
Z.B. am Anfang dermain.time.tv_usecwird 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);