此表单无法使用我的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)
...
为什么不起作用?
答案 0 :(得分:11)
这不合法,因为你不能将陈述用作表达。
所以,并不是在if
内声明变量是非法的,而是比较。
就像:
(int x = 3) == 3;
是非法的,而
int x = 3;
x == 3;
不是
答案 1 :(得分:0)
如果您不想在您的范围内乱丢垃圾,可以使用{}
阻止:
...
{
int val;
if((val = getvalue()) == 3) {
...
}
}
...
val
将在最后}
被销毁,之后将无法显示。