
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++ )
{
}
みたいにできると思ってやったらエラーになってしまうので・・。
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 ( ; ; ){ … }』とします。
このやり方の方が、警告メッセージなどが出ないため『すっきり』します。
・以上。おわり。
No.4
- 回答日時:
スコープが気になるなら、
{
int i;
char j;
for( ... )
{
...
}
}
という感じで、変数宣言も含めて中カッコで囲んでしまえばよいかと。
No.2
- 回答日時:
型の違う変数をカンマで区切って宣言することは、できません。
残念ながら、言語仕様でそうなっています。
なので、
char j;
for(int i=…
もしくは、
char j;
int i;
for(i=…
などとするほうが良いと思います(下のほうだとiのスコープが変わりますが)。
型が違うということは、iとは別の意味や動作に使うということでしょうから、カウンタとは別に宣言するほうが見た目にも良い気がします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
C言語 配列の長さの上限
C言語・C++・C#
-
C言語での引数の省略方法
C言語・C++・C#
-
-
4
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
5
BitBltについて。
C言語・C++・C#
-
6
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
7
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
8
C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい
C言語・C++・C#
-
9
'int' から 'LPCSTR' に変換できません。
C言語・C++・C#
-
10
ファイルやディレクトリの存在確認を行う方法
C言語・C++・C#
-
11
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
C言語・C++・C#
-
12
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
13
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
14
セル列のすべての文字列の頭に”0x”を追加したい
その他(Microsoft Office)
-
15
svnでファイル移動すると履歴がついてこない
その他(コンピューター・テクノロジー)
-
16
#define _CRT_SECURE_NO_WARNINGS について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
プログラムの中で別のmainを呼...
-
構造体の宣言でエラーが出ます。
-
long型の定数の末尾にLを付ける...
-
GCCで暗黙の型変換の警告を出し...
-
C++のfor文について
-
2重定義って??
-
C++でboolにintの値を代入する...
-
sshdログの意味
-
スレッドのスケジューリングポ...
-
構造体の要素すべてに対する四...
-
C++ クラスをメンバにもつクラ...
-
関数の実体定義にヘッダファイ...
-
テンプレート関数でコンパイル...
-
【#define】 defineで定義した...
-
void func( void )について
-
Aの値からBの値を除するとは??
-
「Aに対するBの割合」と「Aに対...
-
複数桁10進数の*桁目だけを抽出...
-
有効数字について 以前質問をし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
main.c:7:43: warning: implici...
-
intとINTの違いは?
-
C++のfor文について
-
2重定義って??
-
void func( void )について
-
変数の型を定義しなかった場合...
-
C言語のコンパイルエラー
-
C++でboolにintの値を代入する...
-
ハンドルされていない例外が発...
-
構造体の要素すべてに対する四...
-
構造体の宣言でエラーが出ます。
-
プログラムの中で別のmainを呼...
-
[C++]メンバ関数の仮引数について
-
0除算を判定したい
-
プログラム、どのように書いて...
-
typedef enumの使い方を教えて...
-
enumについて
おすすめ情報