• ベストアンサー

C++のfor文について

C++では for ( int i = 0, j = 0; i < 10; i++ ) { } みたいな感じでforのなかで変数の宣言ができます。 ところで上の例ですとint型のiとjを2つ宣言していますが、 もしint型とchar型を宣言したい場合などは char j; for ( int i = 0; i < 10; i++ ) { } みたいにしないといけないのでしょうか? for ( int i = 0, char j; i < 10; i++ ) { } みたいにできると思ってやったらエラーになってしまうので・・。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★『for』文について ・『for』文は次のようになります。  『for ( 初期化式 ; 条件式 ; 増減式 ){ … }』です。  この3つの『式』は独立していますので省略などが出来ます。→3つ省略の可能(無限ループになる) ・最初の『初期化式』ですが、ここには1つの『式』しか書けません。→昔から。 ・それで『C++』では『for』文の中にも変数の宣言子が記述できるように機能UP  しました。が、記述できるのは、やっぱり1つの式だけです。この1つの式に  『宣言子』が1つ付けれるだけなので複数の『宣言子』をカンマなどでは記述  出来ません。→回答者 No.2 さんの『言語仕様』って事ですね。 ・よって、回答者 No.1 さんの『回答へのお礼』みたいに『char j』は外で宣言  するしかないでしょう。 余談: ・無限ループを構成するのに『while ( 1 ){ … }』が有名ですが、『for』文でも  構成できます。→このとき、3つの式を省略します。 ・つまり『for ( ; ; ){ … }』とします。  このやり方の方が、警告メッセージなどが出ないため『すっきり』します。 ・以上。おわり。

その他の回答 (3)

  • yukimican
  • ベストアンサー率70% (112/159)
回答No.4

スコープが気になるなら、 {  int i;  char j;  for( ... )  {    ...  } } という感じで、変数宣言も含めて中カッコで囲んでしまえばよいかと。

回答No.2

型の違う変数をカンマで区切って宣言することは、できません。 残念ながら、言語仕様でそうなっています。 なので、 char j; for(int i=… もしくは、 char j; int i; for(i=… などとするほうが良いと思います(下のほうだとiのスコープが変わりますが)。 型が違うということは、iとは別の意味や動作に使うということでしょうから、カウンタとは別に宣言するほうが見た目にも良い気がします。

noname#39970
noname#39970
回答No.1

普通に宣言するにも int i,char j; ってできないよね? そういう事では?

amazontester
質問者

お礼

回答ありがとうございます。ということは char j; for ( int i = 0; i < 10; i++ ) { } みたいにするしか方法はないということでしょうか・・。

関連するQ&A

専門家に質問してみよう