开发平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev c++,VS 问题(Question): 一开始是遇到了这个问题 int a = 10; int b = a; int main(){return 0;} 在C是不行的,错误讯息: initializer element is not constant C++则没问题 所以我改成 const int a = 10; int b = a; int main(){return 0;} 依旧是不行 查了一下知道了大概的理由,但还是有点不知所以 看完后的理解是: C在初始化全域变量时需要constant expressions,因为他是存在Data segment 然后在C++初始化全域变量时则不需要 至于加了const后还是不行则是因为在C里不算是标准的constant expressions 他需要compile-time constant(全域变量是在compile time初始化的) (以上是从stackoverflow不同回答拼凑出来的想法 不知道有没有哪里理解错?或是能帮我多做补充的 谢谢!