Nic*_*ner 11 c variables syntax
我在Visual Studio 2010中编写C语言.编译器似乎不想让我使用内联变量声明.以下代码生成错误:
unsigned int fibonacci_iterative(unsigned int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
unsigned int prev_prev = 0; // error
unsigned int prev = 1; // error
unsigned int next = 0; // error
for (int term_number = 0; term_number < n; term_number++) {
unsigned int temp = prev_prev + prev;
prev = next;
prev_prev = prev;
next = temp;
}
return next;
}
Run Code Online (Sandbox Code Playgroud)
错误:
错误C2143:语法错误:缺少';' 在'类型'之前
错误C2143:语法错误:缺少';' 在'类型'之前
错误C2143:语法错误:缺少';' 在'类型'之前
为什么会这样?是否有设置使编译器不那么严格?
jam*_*lin 10
在C89中不允许在非声明之后放置声明,尽管在C++和C99中允许它(但MSVC仍然不支持C99).
在C89中,您可以通过使用嵌套块来实现类似的效果:
unsigned int fibonacci_iterative(unsigned int n) {
if (...) {
}
{
unsigned int prev_prev = 0;
unsigned int prev = 1;
unsigned int next = 0;
...
}
}
Run Code Online (Sandbox Code Playgroud)