質問: clock(); printf("double型の掛け算のみにかかる時間%f [μs]\n",( ((double)(cl6 - cl5) / CLOCKS_PER_SEC) - ((double)(cl8 - cl7) / CLOCKS_PER_SEC) ) * 100); return 0; }
回答: そもそも考え方が違くないですか? 代入の総時間から積演算の総時間を引いたら、そりゃマイナス値にもなるでしょう(代入の方が軽いから) 処理は4つある。 int型の積演算 int型の代入 double型の積演算 double型の代入 で、積演算については、ループ処理を除いた純粋な演算部分のみの時間を求める。 代入については、ループ処理を除いた純粋な演算部分のみの時間を求める。 つまり、ロジックとしてはこうじゃないでしょうか(時間部分は簡略してmsにしています) ``` cl = 0; for (i = 0; i < NLOOP; i++) { cls = clock(); s = i * i; cle = clock(); cl += (cle - cls); } printf("演算のみ %ldms\n", cl); ``` 上記はint型の積演算部分のみですが、他の3つについても同様の考え方です。