2016-09-11 12 views
1

エポックからの経過時間を秒単位で、ミリ秒単位で表示する方法はわかっていますが、ナノ秒で試してみると、あまりにも小さい整数の偽出力が得られます。最後の実行よりも。エポックからナノ秒単位で印刷する時間

たとえば、これを実行すると、エポックから35071471ナノ秒が得られます。

これを正しく表示するための助けがあれば幸いです。

答えて

2

ナノ秒の部分はちょうど "分数"部分です。秒も追加する必要があります。

// otherwise gcc with option -std=c11 complaints 
#define _POSIX_C_SOURCE 199309L 
#include <stdio.h> 
#include <time.h> 
#include <stdint.h> 
#include <inttypes.h> 
#define BILLION 1000000000L 
int main(void) 
{ 
    long int ns; 
    uint64_t all; 
    time_t sec; 
    struct timespec spec; 

    clock_gettime(CLOCK_REALTIME, &spec); 
    sec = spec.tv_sec; 
    ns = spec.tv_nsec; 

    all = (uint64_t) sec * BILLION + (uint64_t) ns; 

    printf("Current time: %" PRIu64 " nanoseconds since the Epoch\n", all); 
    return 0; 
} 
+0

もう一つ...はるかに役立つトピックに関する情報ページより、 –

+0

をありがとう、それは 'char'として' ALL'をキャストすることは可能でしょうか?私がしようとしているのは、それをキャストしようとするとセグメンテーション違反が発生します。 –

+0

'all'は8バイトの大きな整数で、非常に大きな数字です。なぜそれを1バイトの小さな 'char'としたいのですか? – deamentiaemundi

関連する問題