已搜索此答案,但找不到任何內容。我能找到的最接近的是 difftime returning 0 when there is clearly a difference其中有具有與自變量進行壓入堆棧,什麼格式要求做了很好的解釋,但我想我的問題是不同的:fprintf and difftime madness
我所做的那樣簡單儘可能的例子。假設我有以下代碼在C:
time_t starttime = time(NULL)
somefunction();
time_t newtime = time(NULL)
fprintf(stderr, "starttime %f and difftime %f\n", starttime, difftime(newtime, starttime));
fprintf(stderr, "difftime %f and starttime %f\n", difftime(newtime, starttime), starttime);
return 0;
而somefunction是對於1或2秒運行一些功能。我得到這個輸出是:
starttime 2.000000 and difftime 0.000000
difftime 2.000000 and starttime 0.000000
我甚至不知道從哪裏開始我的問題。爲什麼當我交換訂單時,輸出的值仍然是相同的?此外,爲什麼其中一個值爲0?無論我使用%f,%d,%lu,%llu等,這都是一樣的。是否有對此的棧參數解釋? fprintf真的在內部做什麼?
謝謝。我已經浪費了太多的時間去嘗試調試,我真的很感謝你的幫助!
它似乎並不重要什麼說明符我使用。你建議我用什麼來代替? – bhh1988
@ bhh1988:格式字符串_must_中的說明符與您作爲參數傳遞的變量的類型相匹配。發佈的示例cnicutar會將'time_t'值轉換爲double,以確保它們匹配。 – Mat