0

私が使用する標準で

for(int i=0; i<10; i++)
{...do something...}

しかし、私はよく C の文字列 (char[]) を反復処理します。特に、lcd ディスプレイのシフト ループを作成することによって、最初の文字を格納し、シフト後に最後に配置する必要があります。

したがって、私の質問は次のとおりです。順序をそのように変更できますか (これは間違ったコードであることはわかっています!!):

uint8_t i;
for(i++;i=0; i<10;)
{...do something...}
uint8_t last_iterated_value = i;

通常のスタイルの問題は、条件 "i<10" はループを 9 で終了しますが、次の i++ はループ内とループ後の i を異なるものにすることです。

言い換えれば、ループの後に "{...}" direkt で i の最後の有効な値を確認したいのです。そしてもちろん、「i」を再びデクリメントできることはわかっています。forループをクエリで終了させる方法があるかどうか、私はただ興味があります.

どうもありがとう...

グレイティングス・オーケル

4

7 に答える 7

1
for(int i=0; i<=SENTINEL_VALUE; i++)
于 2013-05-16T15:56:06.257 に答える
1

以下は有効です

uint8_t last_iterated_value = i-1;

あなたも使うことができます

int i=0;
do {
    ...do something...
} while(i<10);
uint8_t last_iterated_value = i;

または

int i=-1;
while(++i<10) {
    ...do something...
}
uint8_t last_iterated_value = i;
于 2013-05-16T15:50:43.647 に答える
1

次のようにループを作成できます。

for (int i = 0; i <= 9; i++)

または、ループの後、make take i - 1aslast_iterated _value

于 2013-05-16T15:57:26.673 に答える
0

これを電話して、main()私があなたの質問を正しく理解しているかどうかを確認してください

void *workin(){
    int i=0,count=10;

    char v[]={' ',' ','>','>','>',' ',' ',' ',' ',' '};
    printf("\n");
    for(;;){
        for(i=count-1;i>=0;i--){
            v[(i+1)%(count)]=v[i];
        }
        fflush(stdout);
        printf("processing %s \r",v);
        sleep(1);

    }
}
于 2013-05-16T16:05:02.190 に答える