エラー、バグ、質問 - ページ 1644

 
Alexey Navoykov:
遠い過去から来たのか?)
いや、もうちょっと近い。
 
A100:

コンパイルエラー: ')'- すべてのコントロールパスが値を返すわけではない

まあ、率直に言って、これは無茶な例です。 C++では許されるとしても、実際のアプリケーションでこのケースはあり得るのでしょうか? 反復が1回しかないのに、なぜそこにループを置く必要があるのでしょうか?
 
Alexey Navoykov:
まあ、率直に言って、これは無茶な例です。 C++では許されるとしても、実際のアプリケーションでこのケースはあり得るでしょうか? 反復は1回だけなのに、なぜそこにループを置くのでしょう?

なぜ1かというと、ある意味、無限のサイクルであり、それが続くと書かれているのであれば

そして、時にはそれが必要なときがあります。どんなときかわかりますか?ヒントをあげると、gotoのような複雑なif-elseスイッチから、不要なフラグやその他の余計なものを使わずに抜け出るには

 
A100:

無限に続くサイクルであり、継続するのであれば、なぜ1つなのか

そして、1つだけ必要な時があるのですが、いつだかわかりますか?

あ、ちょっと気づかなかったんですが、そこのコメントに何か書いてありますね...コードで表示するのは大変でしたよね?
 

一般に、「return, continue, without breakを含む多くの行の下」というのが具体的に何を意味するのか、あまり明確ではありません。

p.s. 了解です。

 
Sergei Vladimirov:
彼の例で言えば、全部です。while(true)からの退出は、break演算子(これは持っていない)かreturnによってのみ 可能です。
ヴィタリイ・アナネフ
反論するつもりはない。しかし、コンパイラのエラーメッセージ')'- すべてのコントロールパスが値を返すわけではない、と書かれています。

何の反対?ブレークやリターンで抜けるだけではないこと?))

 
Alexey Navoykov:
一般に、「多くの行の下に c return, continue, no break」というのが具体的に何を意味するのか、あまり明確ではありません。

そんなことはどうでもいいんです。空いた周期でも遊べる。

bool Func()
{
   while(true)
   {
      return true;
   }
}
//')' - not all control paths return a value	Temp Script.mq4	25	1


 
Sergei Vladimirov:

何の反対?ブレークやリターンで抜けるだけではないこと?))

そういうことなんです。

すべてのコードブランチが値を返すとは限らない ......。

上のコードの分岐がすべて値を返すわけではない、という意味です。このような場合、コンパイラはこのエラーを発生させます。

 
Vitalii Ananev:

これはそのことです。

上記のコードのすべての分岐が値を返すわけではないこと。このような場合、コンパイラはこのエラーを発生させます。

それは、「エラーメッセージが間違って いる」ということです。
 
Sergei Vladimirov:

そんなことはどうでもいいんです。空いた周期でも遊べる。

それこそ、エラーメッセージがおかしいんです。

彼は完全なコードを示さず、どうやらその完全なコードには分岐演算子があるようです。