A. c語言循環函數用法
循環j*8505次.
假設j開始等於100,
while外循環則循環100次,
每次執行一次內循環,
內循環每次執行8505次.
總共100*8505次.
你這個硬體處理器的頻率可能運算8505次計算為1秒(或毫秒/微秒/納秒),
然後delay函數實現循環n秒(或毫秒/微秒/納秒).
應該不是秒,
1秒才運算8000多次的話那.....
B. 請問C語言中clock()函數該怎麼用
clock()是C/C++中的計時函數,而與其相關的數據類型是clock_t。
它的具體功能是返回處理器調用某個進程或函數所花費的時間。函數返回從「開啟這個程序進程」到「程序中調用clock()函數」時之間的CPU時鍾計時單元(clock tick)數,其中clock_t是用來保存時間的數據類型。
在time.h文件中,我們可以找到對它的定義:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
clock_t其實就是long,即長整形。該函數返回值是硬體滴答數,要換算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000,這表示硬體滴答1000下是1秒,因此要計算一個進程的時間,用clock()除以1000即可。
clock的返回值一直是0的原因:
1、編譯器優化,for循環實際根本沒執行,直接跳過去了,所以時間為0。
2、clock計算的是程序佔用cpu的時間,如果你的程序執行的動作很少,那麼clock算出的時間也很少。
3、建議使用time gettimeofday函數來計時。
(2)c語言納秒擴展閱讀:
C語言中clock()函數的程序例1:(TC下運行通過)
#include<stdio.h>
#include<time.h>
intmain(void)
{
clock_tstart,end;
start=clock();
delay(2000);
end=clock();
printf("Thetimewas:%f ",(double)(end-start)/CLK_TCK);
return0;
}
說明:CLK_TCK定義在TC中的time.h中:#defineCLK_TCK18.2。
在VC6.0中也有關於CLK_TCK的宏定義,不過其值不再是18.2,而是1000。
實際上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。
C. c語言中delay 10000是延遲幾秒
首先就是機器的CPU頻率,快的CPU執行i--這句的機器時間短,慢的機器就很慢。
其次是當前機器的負荷情況,負荷較重時,系統給當前進程分配的CPU時間少,執行這些語句的機會就少,延遲就增加了。
影響因素還有很多在此不再列舉。
做延遲程序主要有以下幾種方法:
1.
定時器法
用CWnd::SetTimer()函數設置定時器,當定時時間到時發送WM_TIMER消息觸發CWnd::OnTimer()函數,重載它把自己的代碼放進去。
SetTimer()參數為毫秒,此方法定時不高,受系統負荷影響。
2.
休眠法
調用系統API函數Sleep(2000);
參數單位是毫秒,2000代表2秒。
此方法主要收到當前系統負荷的影響,定時不太准確
3.
時刻比較法
定義兩個CTime變數,一個用於記錄起始時刻,另一個放在循環體中不斷刷新當前時刻,並減去起始時刻,自己計算是否到時間了。
此方法因CTime變數只能獲取秒級的時刻,且收到系統負荷影響,精度也較低。
4.
CPU滴答查詢法
利用兩個API函數QueryPerformanceFrequency()和QueryPerformanceCounter()分別獲取CPU的頻率和CPU滴答數,依時刻比較法自己計算時刻差值。
因為CPU滴答數是等於CPU的機器周期的,所以是Windows系統里最最精確的計時方法了。現在的CPU主頻都是GHz級的,因此理論上計時精度可以到納秒。
只要系統負荷不太重,此法可用於極其精確的延時程序。
因為Windows並不是實時操作系統,因此對於太過精確的計時,還是無能為力的。
D. 24MHZ單片機中 C語言一條指令需要多少時間
看是什麼的單片機,普通的51就是12倍頻的,需要把晶振除以12才是每條指令的執行時間,如果是stc之類的1t單片機就是晶振的振盪頻率
E. c語言有辦法取得當前納秒或微秒級的時間嗎
QueryPerformanceCounter,但是有人質疑其准確性,具體請自信網路
F. sleep()函數怎麼具體在c語言中怎麼用
Sleep方法是Java線程(Thread)開發中一種概念。是線程TIMED_WAITING狀態中的一種方法。使用方法為:
1、類名為創建線程的類名。
注意事項:
Sleep函數可以使計算機程序(進程,任務或線程)進入休眠,使其在一段時間內處於非活動狀態。當函數設定的計時器到期,或者接收到信號、程序發生中斷都會導致程序繼續執行。
G. 問個弱弱的問題,C語言里usleep的單位是多少,是不是百萬分之一秒
標准C中沒有標準的usleep函數吧? 要看你對應平台的實現。
按字面意思,usleep就是微秒,就是百萬分之一秒。
H. C語言如何實現納秒級隨機
哥們 實現不了的 受機器體系結構和處理器限制 時間相關的都是用匯編做的 這樣才能精確計算時間
I. C語言如何精確計算程序運行時間除clock()函數之外。。。急急急!!!!
如果你要更精確的,就需要使用系統API來獲取了。
windows sdk下面有幾個獲取CPU時鍾的函數,我記得一個gettickcount(),返回開機到調用時的毫秒數(像360之類的軟體的計算系統啟動時間就是調用這個api)可以用來計算運行時間。實際上還有更精確的,我沒有用過(因為毫秒對我就夠用了),所以不記得名字,我搜了一下,給你附了個鏈接。
記得#include <windows.h>
再想到一點,如果你是用linux的話,我就不太熟了……
J. c語言編程中的%.1s是什麼意思
用在printf中是:在屏幕當前游標所在處開始將它對應的字元串的第1個字元列印出來。