質問: 0 ){ 5) printf( "%d ", x ); 6) n /= x; } } 全て解説を頼むと考えなくなるため、3) の解説をお願いします。
回答: > for( x = 2 ; n > 1 ; x++ ) ここで、xとnの2つの変数が出てくるので混乱しているのではないでしょうか。 forによるループは言語によって何種類かあります。 1)配列状のものを順番に処理するもの 2)数値を開始値から順番に変化させて終了値まで処理するもの 3)その他 cは3)その他の形です。 for(式1;式2;式3)で ・ループを開始する前に式1を実行 ・式2の値を評価して「真」ならループを実行 ・1回ループするたびに式3を実行 という処理をします。 最初に習ったのは for(i=0;i<10;i++) みたいなものではないでしょうか。これは2)のタイプのfor文をc流に表現したものです。 実は、それぞれの式に関連性(同じ変数を使っている、とか)が無くても、動作します。この場合は ・ループを開始する前に「x=2」を実行 ・「n>1」を評価して「真(nが1より大きい)」ならループを実行 ・1回ループするたびに「++x」を実行 となります。 1)2)型のforに比べて、とても柔軟なループが作れるのが利点です。 反面、扱いを間違えると無限ループや実行されないループを作ってしまう危険があります。