→ CuckooBoy:感謝大大的指導!!PO文之餘有花時間看一些書了~~ 02/09 20:41
for(i=0;i<3;i++)
{
}
for(執行初始;什麼時候執行;執行累加)
也就是第一個是給初始條件,第二是說什麼時候要停止,第三個是說每當執行完i的動作為何
以上面的i++來說,是當整個for迴圈執行完時i會+1,直到執行到i沒有小於3就停止
接著,for迴圈的執行是一圈一圈執行,
以上面的程式來說,假設我在裡頭多加一行
for(i=0;i<3;i++)
{
printf i;
}
則第一個回圈他會列印出 0
二 1
三 2
由於不再滿足條件,所以回圈停止.這樣請問有了解for回圈用法了嗎??
另外,看了你下面的程式,應該是ok了,在長度方面ok了,至於你說會不會有什麼瑕疵
你再撥問題的時候,應該要把你的程式要求給明確表達出來,不然我們還要去研究
你的程式要求到底是什麼, 這樣要回答你的意願就自然會降低一點囉.
所以,多花點時間,將你的問題詳述一下,然後再給出你自己的程式碼我想會好一點.
另外,請Cuck兄,你本身應該要多讀點C語言的書.起碼在一些基本觀念你要適度的理解.
就for迴圈來說,其實應該算是滿入門的東西.
多讀一點,一方面增進自己知識,一方面免去求問的時間.
加油啦
※ 引述《CuckooBoy (阿書)》之銘言:
: 下面的程式,動作正常,只是覺得if太多,不知道有辦法縮短嗎?(不影響動作)
: 另外,想知道.......這樣的語法有沒有什麼暇吃或不妥的地方法?
: 還有還有......就是.....
: for(i=0;i<3;i++)
: x=abc[i];
: 請問i++是一次做完?還是進入for只做一次,0~3要進入三次
: 會問這問題原因是.....下面程式i我用計數代48*i-1
: 我想用for取代.....但是覺得那個i++如果組合語言角度想的話
: 應該是........"進入for時才作一次i++"
: 所以用for改寫,好像會讓程式動作錯誤
: =================================================================
: #define SDI P1_0
: #define DCLK P1_1
: #define LE P1_2
: #define GCLK P1_3
: #include "AT89C51.h"
: unsigned int code SDI_LUT [] = {1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
: 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,
: 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1};
: main()
: {
: unsigned int SDI_cnt,LE_cnt = 0;
: unsigned int i = 1;
: while(1)
: {
: DCLK = 0;
: SDI = SDI_LUT[SDI_cnt];
: DCLK = 1;
: if (LE_cnt == 48*i-1||LE_cnt == 766)
: {
: LE = 1;
: }
: else
: {
: LE = 0;
: }
: if (SDI_cnt < 47)
: {
: SDI_cnt++;
: }
: else
: {
: SDI_cnt = 0;
: if (i < 16)
: {
: i++;
: }
: else
: {
: i = 1;
: }
: }
: if (LE_cnt < 767)
: {
: LE_cnt++;
: }
: else
: {
: LE_cnt = 0;
: }
: }
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.44.92