4

このフォームは、私の VS2008 コンパイラではコンパイルできません。それは可能であるべきですか?

#include <iostream>
using namespace std;

int getvalue() { return 3; }

int main(int argc, char* argv[])
{
if((int val = getvalue()) == 3)
    cout << "val=" << val << "\n";
return 0;
}

このフォームは機能します。...

int val;
if((val = getvalue()) == 3)

...

うまくいかないのはなぜですか?

4

2 に答える 2

0

スコープを散らかしたくない場合は、{}ブロックを使用できます。

...
{
  int val;
  if((val = getvalue()) == 3) { 
  ... 
  }
}
...

val最後に破棄され、}その後は表示されません。

于 2012-04-11T14:39:36.647 に答える