2012-03-28 29 views
0

Ich habe eine Nummer wie 56789098.9899 und ich möchte es in usleep() verwenden, die nur eine unsigned ganze Zahl als argument.show akzeptiert, um dieses Problem zu lösen?Wie konvertiert man ein Double in int, um es als Argument in usleep zu verwenden?

sleeptime = time_alloted - time_taken.

Hier Schlafenszeit ist ein unsigned int Variable.

+0

Ich muss es als usleep (Schlafzeit) verwenden; – Phoenix225

+0

Es war eine lange Zeit für mich, soweit C betroffen ist, aber hast du es versucht? unsigned lange Int Sleeptime; sleeptime = time_alloted-time_taken; – Terry

+1

Es sollte "einfach funktionieren". Was ist das Problem? –

Antwort

0

Zuerst usleep ein usenconds_t arguement akzeptieren, und useconds_t muss nicht ein unsigned int sein. Siehe usleep Spezifikation hier. http://pubs.opengroup.org/onlinepubs/7908799/xsh/usleep.html

Zweitens, beachten Sie, dass die Argumente nicht größer als 1.000.000 sein dürfen. Und denken Sie auch daran, den Rückgabewert von usleep zu überprüfen, da dies fehlschlagen kann.

Dann verwenden Sie einfach eine Art Besetzung ist gut genug.

0

es sollte funktionieren "wie es ist" So ist der folgende Code funktioniert gut für mich:

#include "stdio.h" 

void func(unsigned int i) 
{ 
    printf("Going to sleep for %d\n", i); 
    usleep(i); 
} 

int main(void) 
{ 
    printf("hello world\n"); 
    unsigned int sleep; 
    sleep = 56789098.9888 - 124234.45345; 
    func(sleep); 
    return 0; 
} 
+0

Es funktioniert für Sie, weil Sie davon ausgehen, dass die erste Variable immer größer als die zweite Variable ist. Versuchen Sie, die erste Variable größer und dann sehen. Auch das Ergebnis i erhalten dh Sleeptime wird innerhalb einer if-Bedingung in etwas wie if (Sleeptime > 0) dann mach das ... Dein Code würde dann sicher brechen. – Phoenix225

Verwandte Themen