在阅读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;
}
答案 0 :(得分:5)
在C中是必要的,但在C ++中则不然。它们是不同的语言。
void foo() { this line is here because of stupid restrictions of Stack Overflow }
答案 1 :(得分:1)
你的代码是C ++,而不是C.一种非常不同的语言。这本书的陈述适用于C,但不适用于C ++。
答案 2 :(得分: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