
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
このQ&Aを見た人はこんなQ&Aも見ています
-
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
C言語 配列の長さの上限
C言語・C++・C#
-
-
4
C言語での引数の省略方法
C言語・C++・C#
-
5
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
6
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
C言語・C++・C#
-
7
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
8
#define _CRT_SECURE_NO_WARNINGS について
C言語・C++・C#
-
9
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
10
C言語 exitの使い方
C言語・C++・C#
-
11
'int' から 'LPCSTR' に変換できません。
C言語・C++・C#
-
12
BitBltについて。
C言語・C++・C#
-
13
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
14
String^の^自体が何を意味しているのか、わかりません。
C言語・C++・C#
-
15
C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい
C言語・C++・C#
-
16
目上の方に、メールの語尾「以上、よろしくお願い致します」は使用しても問
日本語
-
17
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
18
セル列のすべての文字列の頭に”0x”を追加したい
その他(Microsoft Office)
-
19
WORD型をCString型に変換する方法
C言語・C++・C#
-
20
svnでファイル移動すると履歴がついてこない
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
プログラムの中で別のmainを呼...
-
構造体の要素すべてに対する四...
-
C++のfor文について
-
C言語のreturnの使い方
-
intとINTの違いは?
-
64bit → 32bit型へのキャスト
-
long型の定数の末尾にLを付ける...
-
visualstudio C# テキストボッ...
-
変数の型を定義しなかった場合...
-
void func( void )について
-
ハンドルされていない例外が発...
-
C++でboolにintの値を代入する...
-
「Aに対するBの割合」と「Aに対...
-
有効数字について 以前質問をし...
-
C言語での引数の省略方法
-
C言語を実行すると-infが出てき...
-
数学 確率変数Xは、X=2またはX...
-
ある商品のロス率を5%見込み、...
-
プログラムでの数字につく”f”の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
main.c:7:43: warning: implici...
-
2重定義って??
-
変数の型を定義しなかった場合...
-
C++でboolにintの値を代入する...
-
typedef enumの使い方を教えて...
-
C++のfor文について
-
intとINTの違いは?
-
【#define】 defineで定義した...
-
ハンドルされていない例外が発...
-
void func( void )について
-
C言語のコンパイルエラー
-
enumについて
-
関数の実体定義にヘッダファイ...
-
C言語 宣言した変数になにも代...
-
C++ クラスをメンバにもつクラ...
-
プログラムの中で別のmainを呼...
-
sshdログの意味
おすすめ情報