whileの中では、>0という条件でしたけど、その後の
a[i]の部分では、iに0まで入れることができると
考えていいんですかね?1までではなく。
>whileの中では、>0という条件でしたけど、その後の
>a[i]の部分では、iに0まで入れることができると
>考えていいんですかね?1までではなく。
イマイチ理解できてないぽいですが。。。
以下のソースをコンパイル実行してください。
# コンパイラがないならば
# http://www9.plala.or.jp/sgwr-t/detail/EnvSet.html
# を参考に手に入れてください。
#include <stdio.h>
#define MAX 5
int main( void )
{
int i;
int a[ MAX ];
i = 5;
while ( printf( whileの条件式中 i = %d\n, i ), i-- > 0 )
{
printf( whileの条件式後 i = %d\n, i );
a[ MAX - i - 1 ] = 9 - 2 * i;
printf( a[ %d ] = %d\n\n, MAX - i - 1, a[ MAX - i - 1 ] );
}
return 0;
}
>whileの中では、>0という条件でしたけど、その後の
>a[i]の部分では、iに0まで入れることができると
>考えていいんですかね?1までではなく。
とりあえず、これがYESかNOかだけをお聞きしたいのです。
>とりあえず、これがYESかNOかだけをお聞きしたいのです。
私的には NO で。
そのような返信をする前に、ちゃんとレス読んでますか?
i = 1;
while ( i-- > 0 )
{
// ここの i の値は 0 ですよ!
}
# これ以上のレスはしないようにします。
# もっと説明のうまい方におねがいしてください。
# まとめ。
whileの条件式中では、iは5,4,3,2,1,0,-1の値をとります
whileに続く文の中、a[i]のiは、4,3,2,1,0の値をとります
whileを抜けた後のiは、-1
わからないというなら、
もっと自分でプログラムをつくることです・・・(ウダウダ)
習うより慣れろ・・・(ウダウダ)
# まとめへの疑問(自己)
whileの条件式中に-1になりますよね?
条件評価が終わった後に、whileを抜けるのか?
ディクリメントした後に、whileを抜けるのか?
>whileの条件式中では、iは5,4,3,2,1,0,-1の値をとります
i>0という条件下で、なぜ0と-1が入るのでしょうか?
> i>0という条件下で、なぜ0と-1が入るのでしょうか?
0のときに条件が評価されて、whileを抜けるし、
whileを抜ける前に i-- されるから。
ちょっと違うか。
whileの条件式が評価されて、i--されてから
条件式が真か偽かでwhile続行か終了かに処理が流れる。
だから、0>0は偽でwhileは抜けるんだけど、while終了の前にi--されてiは-1。
Blueさんの書き込みのソース
>Blue 2005/06/14(火) 23:18:20
では、5から0まで。
whileを抜けた後のiの値も0。
前置デクリメントと後置デクリメントが値を更新するタイミングを
考えれば、自ずと答えは出てきます。
この辺はしっかり理解した方がいいです。
パターンだけで覚えてしまうと応用が効きませんから。
ちゃんと理解して無いと
i = 5;
while(i-- > 0)
{
:
:
}
このループの後、iの値がいくつになっているか理解できない事になります。
このループの後にiの値を利用するような場面があった時に困る事になると思いますよ。
> whileの中では、>0という条件でしたけど、その後の
や
> i>0という条件下で、なぜ0と-1が入るのでしょうか?
など
これら発言から考えて後置インクリメントを無視してますな。
while( i-- > 0 )
{
a[i] = 9 - 2 * i;
}
は、
while( i > 0 )
{
i = i - 1;
a[i] = 9 - 2 * i;
}
i = i - 1;
と
同じ結果だろ。