ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:koha415 for文
困り度:
  • 困っています
C言語の本を読んでいて、for文の(i=0;i<count;--i)とあるのですが
for(i=0;i<count;i--)とどう違うのでしょうか?それぞれコンパイルした
のですが、同じように実行できましたので、余計にわからなくなりました。
質問投稿日時:08/03/21 00:12
質問番号:3880856
最新から表示回答順に表示

回答

 

回答者:Werner > for(i=0;i<count;i--)
そういえばこのコードおかしくない?
iは0から始まってどんどん小さくなるから
countが1以上の時ループはずっと(オーバーフローでも起こらない限り)とまらないよ。
forブロック内でiやcountに代入してるとかbreak文があるなら別だけど。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/21 00:46
回答番号:No.3
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼書き方が間違っていました、本の内容を一部抜き出して書いたもので
お手数をかけました。

回答

 

回答者:luckymako for文で質問と全く同じ様に書くのであれば
結果は同じになります。

仮に
for(i = 0; i-- < count; ) と
for(i = 0; --i < count; )
の様な書き方に変更すると結果が異なるはずです。

これは以下のことによります。

・C(C++,Javaなんかも)では式も(が)値を持つ。
・--は1を引く演算子で、i--も--iも1を引くことをあらわす式である。
・i--という式は1引かれる前の値を持ち、--iは1引かれた後の値を持つ。


int i = 10;
int j = 10;
int a = --i;
int b = j--;
とすると各変数の値は
i = 9
j = 9
a = 9
b = 10
となります。
種類:回答
どんな人:一般人
自信:参考意見
回答日時:08/03/21 00:45
回答番号:No.2
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼ありがとうございます、丁寧な回答、たすかりました。

回答

 

回答者:Werner そのコードでは前置と後置の違いはありません。同じです。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/21 00:32
回答番号:No.1
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼ありがとうございます、ネットで調べたのですが
同じような質問がなくて助かりました。
 
最新から表示回答順に表示