2016-10-03 11 views
0

サイクルカウントが100 +開始時間の場合にのみ、刻々と変化するクロックサイクル数をポーリングし、ステートメントを印刷しようとしています。 、= 1000000私のスタート場合は、print文は、ときにのみ終了= 1000100 実行する必要があり、それは開始時に仮定などを表示する必要があることをこのような時間= 1000000 こんにちは、startの値:最後の1000000および値:1000101Cのクロックサイクル数をポーリングする

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

void main() 
{ 
     clock_t start,end; 
     start = clock(); 
     while(end=clock() < (start + 100)) 
     {}; 
     printf("Hello, value of start:%d and value of end:%d", start, end); 
} 

私はスタートの こんにちは、値取得していますが:0と最後の値:0

を私は自分のコードを編集し、終了= 0.0000の値を取得しています。このように

while(end=clock()< start + 100) 

ニーズ:これは私がこのラインかなり確信している

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

void main() 
{ 
     clock_t start; 
     start = clock(); 
     clock_t end = start; 
     printf("Hello"); 
     while(end < (start + 100)) 
     { 
       end = clock(); 
     }; 
     printf("value of end is %f \n", end); 
} 

答えて

1

以下の私の編集したコードです

while((end=clock()) < (start + 100)) 

良く著:

void main() 
{ 
     clock_t start = clock(); 
     clock_t end = start; 
     while(end < (start + 100)) 
     { 
      end = clock(); 
     }; 
     printf("Hello, value of start:%d and value of end:%d", (int)start, (int)end); 
} 
+0

私は上記のHello、start:0の値とend:-1582571616の値の後にこの出力を取得しています。しかし、私はwaqnt 100になる –

+1

私はclock_tが本当に64ビットタイプ、長い、または何かと思われる。 printfステートメントの書式指定子を更新します。 – selbie

1

=<より低い優先順位を有するので(端=クロック()<スタート+ 100)

ながらは、正しくありません。

あなたの文は、この(優先順位の点に注意してください。+その後、<その後、=):のように解釈される正確には

while(end = (clock() < (start + 100))) 
    ; 

(clock() < (start + 100))は、1または0のいずれかになりますブール式です。 whileループが実行され、条件が間違ってが0になり、endに割り当てられます。

したがって、式に余計な角括弧を入れることを躊躇しないでください。この場合、必要なものは次のとおりです。

while((end=clock()) < start + 100) 
    ; 
1

最初の問題は、if条件の優先順位が間違っているということです。もう一つは、clock_tは必ずしも整数として表現できるとは限りません。最善の策はdoubleにキャストすることです。これはclock_tが64ビット整数であるが、値は比較的小さい一般的なケースで十分な範囲を与えます。

関連する問題