0

私はC++の初心者です。次のコードを試しました。

while((char c = cin.get()) != 'q')
{  //do anything
}

コンパイルしようとすると、次のように失敗します

エラー:「char」の前にプライマリ式が必要です。

これを理解するのを手伝ってください

4

2 に答える 2

2

式の一部として宣言を含めることはできません。

while ((char c = cin.get()) != 'q') { ...
//      |----------------| <---------------------- this is a declaration
//     |-------------------------| <-------------- this is an expression

ループの括弧内に直接宣言を含めることができます(ネストされた括弧内ではありません)

while (char c = cin.get()) { ...

しかし、これはで止まり!cます。これはあなたが望むものではありません。

これは機能します:

while (int c = cin.get() - 'q') { // ugly code for illustrative purpose
 c += 'q';
 ...
}

そしてこれもそうなるでしょう:

for (char c; (c = cin.get()) != 'q'; ) { // ugly code for illustrative purpose
  ...
}

更新:このSOの質問も参照してください。

于 2012-10-13T10:23:58.847 に答える
1

これを試して:

char c;
while((c = cin.get()) != 'q')
{  //do anything
}

括弧内で変数を宣言しているため、エラーが発生します。

while (char c = cin.get() != 'q')
于 2012-10-13T09:16:50.977 に答える