0

在阅读 Dennis M. Ritchie 的“The C Programming Language”时,我遇到了这一行:

对于外部变量和静态变量,初始化程序必须是常量表达式。

我无法理解常量表达式在这里的含义,因为下面的代码编译时没有任何错误,这不是语句:static int a = n-1,非常量表达式吗?请指出我在这里缺少什么。提前致谢。

#include<iostream>
using namespace std;

int main()
{   
int n;
cin>>n;

static int a = n-1;

return 0;
}
4

3 回答 3

5

它在 C 中是必需的,但在 C++ 中不是。它们是不同的语言。

代码编译为 C++

但不像 C


void foo() { this line is here because of stupid restrictions of Stack Overflow }
于 2013-08-08T16:55:36.123 回答
1

您的代码是 C++,而不是 C。一种非常不同的语言。本书的陈述适用于 C,但不适用于 C++。

于 2013-08-08T16:55:27.843 回答
0

文件 main.c 内容

int main()
{
int n;

static int a = n-1;

return 0;
}

g++ main.c 的输出

//Emptiness because it is valid C++

gcc main.c 的输出

main.c: In function ‘main’:
main.c:6: error: initializer element is not constant
于 2013-08-08T16:58:44.567 回答