• ベストアンサー

for(int i = 100, long n = 1; i > n/3i; i++)

for(int i = 100, long n = 1; i > n/3i; i++) のように、初期設定で型の違う変数を宣言したいんだけど C++ではこんなふうに2つ以上の型を宣言してはいけないんですか?

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

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.1

, コンマ演算子の原理です。 forの初期化文で "," で区切れるのは値を返す文だけです。 よってintステートメントもlongステートメントも値を返さないので、この文では使用できません。 というか、むしろ、intステートメントの第2引数としてlongが認識されてしまいます。 外で int i; long n; とし for(i = 0, n = 0; hoge; hoge) なら可能です。

A__
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

細かいかもしれませんが、用語に混乱があるようなので… カンマ演算子の項は"式”です。 よって、 「forの初期化文で "," で区切れるのは値を返す式だけです」 ということになります。 宣言は“文”なので“式"を書くべき場所におくことは出来ません。

A__
質問者

お礼

ありがとうございます。

関連するQ&A