アプリ版:「スタンプのみでお礼する」機能のリリースについて

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++ )
{

}

みたいにできると思ってやったらエラーになってしまうので・・。

A 回答 (4件)

★『for』文について


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

余談:
・無限ループを構成するのに『while ( 1 ){ … }』が有名ですが、『for』文でも
 構成できます。→このとき、3つの式を省略します。
・つまり『for ( ; ; ){ … }』とします。
 このやり方の方が、警告メッセージなどが出ないため『すっきり』します。
・以上。おわり。
    • good
    • 0

スコープが気になるなら、


{
 int i;
 char j;
 for( ... )
 {
   ...
 }
}
という感じで、変数宣言も含めて中カッコで囲んでしまえばよいかと。
    • good
    • 0

型の違う変数をカンマで区切って宣言することは、できません。


残念ながら、言語仕様でそうなっています。

なので、
char j;
for(int i=…
もしくは、
char j;
int i;
for(i=…
などとするほうが良いと思います(下のほうだとiのスコープが変わりますが)。

型が違うということは、iとは別の意味や動作に使うということでしょうから、カウンタとは別に宣言するほうが見た目にも良い気がします。
    • good
    • 0

普通に宣言するにも



int i,char j;

ってできないよね?
そういう事では?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。ということは
char j;
for ( int i = 0; i < 10; i++ )
{

}
みたいにするしか方法はないということでしょうか・・。

お礼日時:2007/02/07 04:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A