1樓:7靜芯盡力
執行四個語句:
1、先給i賦初值1,
2、判斷i是否小於等於10,
3、 若是則執行語句, 之後值增 加1。
4、再重新判斷, 直到條件為假, 即i>10時, 結束迴圈
2樓:
for迴圈程式語言中的語句之一,用於迴圈執行。for迴圈是開界的,它的一般形式為: for(; 《條件表示式》; ) 語句; 初始化總是乙個賦值語句, 它用來給迴圈控制變數賦初值; 條件表示式是乙個關係表示式, 它決定什麼時候退出迴圈; 增量定義迴圈控制變數每迴圈一次後 按什麼方式變化。
這三個部分之間用";"分開。 例如:for(i=1; i<=10; i++) 語句; 上例中先給i賦初值1, 判斷i是否小於等於10, 若是則執行語句, 之後值增 加1。
再重新判斷, 直到條件為假, 即i>10時, 結束迴圈。
for語句比while語句和do-while都要靈活,是一種功能更大、更常用的迴圈語句,它的一般語法格式為:
for(表示式1;表示式2;表示式3)
其中,表示式可以省略,但是分號不可省略。
c語言的for迴圈中執行一次需多少機器週期?
3樓:萬能導師
機器迴圈,當然只是在微控制器中,不同的微控制器使用不同的編譯軟體,最終都轉換成彙編,把機器**燒錄成微控制器。
不同的編譯軟體可以用不同的方式編譯語句。以keil為例。(我= 0;我< 1;n + +我+ +);(i, n是char或unsigned char)
賦值語句(i=0)有兩個機械迴圈,
乙個判斷語句(i <1) 4個機械迴圈,
乙個自加語句(n++) 1機械迴圈,
另乙個自我遞增語句(i++)1機械迴圈,
另乙個判斷語句(i <1) 4個機械迴圈,結束。
擴充套件資料:
指令週期:
每次cpu獲取一條指令並執行它,它就完成一系列操作,通常稱為指令週期。換句話說,指令週期就是獲取一條指令並執行它所花費的時間。由於每條指令的操作功能不同,每條指令的指令週期也不同。
例如加法指令的指令週期與乘法指令的指令週期是不同的。指令週期通常以cpu週期的數量表示,也稱為機器週期。所需的機器週期數隨指令的不同而變化。對於一些簡單的單位元組指令。
在指令取出週期中,將指令取出到指令暫存器後,立即對其進行解碼並執行,不需要其他機器週期。對於更複雜的指令,例如轉換和乘法指令,需要兩個或更多的機器週期。
具有乙個機器週期的指令通常稱為單週期指令,具有兩個機器週期的指令稱為雙週期指令。
4樓:小雨手機使用者
機器週期當然是在微控制器上才有的說法,不同的微控制器採用不同的編譯軟體,最終都是轉成彙編、機器碼燒錄進微控制器。
不同的編譯軟體,對 for 語句的編譯也不盡相同,以keil 為例,對 for(i=0;i<1;i++) n++;(i,n 均為 char 型或 unsigned char 型)進行編譯,得:
①一條賦值語句(i=0) 2個機械週期,
②一條判斷語句(i<1) 4個機械週期,
③一條自增語句(n++) 1個機械週期,
④又一條自增語句(i++) 1個機械週期,⑤又一條判斷語句(i<1) 4個機械週期,結束。
5樓:希聲和寡
***********************************=
問題補充:5樓的朋友,如果我改成
for (i=9;i<100;i++)
x=2;
其延時又是多少?
***********************************=
賦值語句的耗時一般是不計入時間消耗的(就像我們計算時間複雜度時,不考慮賦值的時間消耗一樣)
所以:for (i=9;i<100;i++)
x=2;
的時間消耗就可以理解為for (i=9;i<100;i++);的時間消耗,
大約就是:
92*8*1us=0.736ms(12m晶振)
12m的晶振的機器週期是1/12m*12,就是1us
其次不同的微控制器執行語句的機器週期也不一定一樣(比如:atmel 51系列及大多數51的乙個機器週期是12個時鐘週期,華邦的只需要4個時鐘週期)。不過大體來說,一條for迴圈大概8個機器週期,在12m晶振下,通常用以下**實現1ms的延時:
void delayms(unsigned int ms) }
大概算一下,120*8*1us=1ms,如果需要精確的定時,還是得用定時器。
如果是for (i=0;i<100;i++);的話,
那麼 大概算一下,100*8*1us=0.8ms
6樓:匿名使用者
for(i = 0; i < 100; i++);
這條語句被優化掉了,
你可以將i的宣告新增volatile以阻止編譯器對其進行優化然後在用3樓 giftbowen 的方法試之
7樓:
利用clock()函式
clock_t start=clock();
for(i=0;i<100;i++);
clock_t end=clock();
這裡clock_t 是clock()函式返回型別的別名,意味著可以講變數宣告為clock_t型別,接受clock()函式返回值
clock()函式返回程式開始執行後的系統時間end-start的值就是100次for迴圈所用的系統時間不過我試了一下,好像,就算讓for迴圈不執行空語句,100次for迴圈所用的系統時間也是0.0
系統時間的單位是ms可能跟機器週期單位是μs差很多吧
8樓:匿名使用者
clock函式,計算用到的時鐘數。
9樓:世鑲柳
執行時間可能是零!
這和編譯器有關(如優化級別),還和cpu有關(如流水線不一樣)。
c語言 for迴圈執行步驟
10樓:一騎當後
簡單的for迴圈程式如下:
for(int i=0;i<20;i++)執行步驟是:
1、i=0 初始化初值;
2、 進行條件專判斷i是否
<20,如果條屬件為真,則繼續執行;
3、執行迴圈體的**;
4、i++ 變數i自增一次;
5、回到第2步,一直迴圈,直到第2步條件為假時, 退出迴圈,結束。
11樓:你豈是我的對手
開啟嗶哩嗶哩,搜尋"詳解c語言之for迴圈執行順序",有詳細講解for迴圈
12樓:吉祥二進位制
c語言for迴圈的bai
格式一般如下du:
for (exp1; exp2; exp3 )
13樓:匿名使用者
for中的難點在於:
如下語句:
int a=10,b=10,k;
for(k=0;a>8;b=++k)
答案:10,9,9,0
注意:for的執行步驟書專上很少有這樣的例子解屬釋,開始表示式3沒有執行b=++k;在第一次的迴圈結束後,才開始執行的。
14樓:幻☆天芒
for迴圈下沒有{}的話,只管下乙個分號句,有{}的話,就是{}內的所有。for迴圈是自信完迴圈體就下一次迴圈,不是程式結尾。
15樓:葉小憐
for(a; b; c)
首先抄執行a,bai然後判斷是否滿足b,如du果不滿足就退出迴圈,執行循zhi環下面的語句,dao如果滿足,就依次執行statementq1,statement2。。。最後執行c,然後再判斷b是否滿足,再像上面一樣
也就是說a只在第一次執行的時候執行,b,c要反覆執行
16樓:匿名使用者
關注for迴圈語句後面的'{}'的範圍即可
for迴圈語句的第乙個表示式在整個迴圈體中執行的次數為 ,第二個表示式省略時相當於其
17樓:匿名使用者
for迴圈語句的第乙個表示式在整個迴圈體中執行的次數為 1 ,第二個表示式省略時相當於其值為 1
18樓:匿名使用者
第乙個表示式執行一次,第二個表示式省略相當於其值為true
這個for迴圈語句內的兩個for語句是怎麼執行的
19樓:匿名使用者
語句內的兩個for迴圈,沒有{}括號來括,因此是直接迴圈,比如,i=1時,對於語句中第乙個for迴圈,此時j=4,i=1,迴圈4次,輸出四次空格,然後執行後乙個for迴圈,此時j=1,i=1,滿足的只有一次,輸出乙個*,for迴圈結束,再換行符換行。
外面執行4次for迴圈,因此是四行。
估計應該是輸出*號的三角形圖案。
20樓:聽不清啊
1)外層的i取乙個值,滿足條件則進入迴圈。
2)內層迴圈j取乙個值,滿足條件則進入迴圈。
3)迴圈結束後,外層的i加1,轉1)。
21樓:崔元浩
第乙個for先迴圈完了再迴圈第二個for,當然得受最外面那個for的影響,效果就是這樣的:
****
*****
*******
22樓:匿名使用者
i:1j:4321
j:1i:2
j:432
j:13
i:3j:43
j:135
i:4j:4
j:1357
c語言中for迴圈語句 for(i=1;i<10;i++)這個一共執行幾次 我總是無法完全理解 求
23樓:匿名使用者
首先要知道for語句
的執行原理,這樣你就知道答案了:
現在以 for(i=1;i<10;i++)為例說明如下:
1.:執行到for語句時,讓i=1,但這只執行一次。也就是說for語句中第乙個分號前的語句只執行一次,就是相當於初始化
2.:判斷第二個分號前的**是否為真
如果為假則退出for語句,就不執行for語句的後面{}中的語句,當然也就不執行第二個分號後的**了
如果為真,則先執行for語句的後面{}中的語句,如果期間沒有跳出語句的**則執行第二個分號後的**,再跳回到2步進行判斷!
所以你的這個for迴圈如下執行
先 i=1
1次,此時i=1,滿足i<10 執行for語句內**,執行i++(i=2)
2次,此時i=2,滿足i<10 執行for語句內**,執行i++(i=3)
3次,此時i=3,滿足i<10 執行for語句內**,執行i++(i=4)
4次,此時i=4,滿足i<10 執行for語句內**,執行i++(i=5)
5次,此時i=5,滿足i<10 執行for語句內**,執行i++(i=6)
6次,此時i=6,滿足i<10 執行for語句內**,執行i++(i=7)
7次,此時i=7,滿足i<10 執行for語句內**,執行i++(i=8)
8次,此時i=8,滿足i<10 執行for語句內**,執行i++(i=9)
9次,此時i=9,滿足i<10 執行for語句內**,執行i++(i=10)
此時i=10,不滿足i<10 退出for語句,未執行i++(i=10)
24樓:無奈去遊戲
9次 i=1 小於10 進入迴圈 執行宣告 後i++i=2 一次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=3 2次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=4 3次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=5 4次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=6 5次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=7 6次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=8 7次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=9 8次完成,
返回for 判斷小於10 進入迴圈執行宣告後i++i=10 9次完成,
大於10跳出迴圈
C語言乙個for迴圈有幾條語句?
三條,語句之間用 分隔。語句可以省略,但是 不可以省略。這個沒有限制的,for的引數裡面的 符號只是用來區分3個語句塊的用途,分別是 初始化,迴圈條件,累加器,實際上下面這個語句也是正確的。如果都寫的話是3個語句。c語言for迴圈巢狀語句中有連續多個for語句怎麼執行的?舉個例子。int n 0 f...
sql語句,乙個sql語句
select intol.gno,sum outl.amount sum intol.amount from intol,outl where intol.gno outl.gno group by intol.gno順便說下這種寫法如果intol和outl中gno相同記錄有多個時,得出的sum是錯...
for迴圈怎麼寫,用一個for迴圈怎麼輸出九九乘法表?
for迴圈的特點 迴圈次數確定的 可計算的 迴圈變數在每次迴圈中取不同值。當然這個要求不是必須的。一般來說,迴圈變數初值為0,在迴圈中每次增加1,迴圈體中可以利用這個變數的取值來進行運算。格式 for 迴圈初始化語句a 迴圈條件b 每次迴圈體執行完執行的語句c 執行順序 abdcbdcbdc.b 舉...