2012-08-07 161 views
1
#include <iostream> 

using namespace std; 
int b=10; 
//b=100; 
int main(int argc, char *argv[]) 
{ 
    cout<<b<<endl; 
    return 0; 
} 

如果删除b = 100的评论时出错。为什么这样呢?否则输出为10。 错误:C++需要所有声明的类型说明符。类型说明符错误

+1

您不能在函数外执行赋值,但可以进行初始化。 – hmjd 2012-08-07 09:59:48

回答

2

全局范围只能包含声明和定义,而不能包含任意语句。

C++认为您正在尝试声明并定义另一个名为b的变量。

1

表达式语句(如b=100;)必须在函数内。

在函数之外,可以声明和初始化变量,但不能直接执行任意代码。

由于编译器将代码解释为没有类型说明符的声明(即int b=100;缺失int),而不是作为表达式语句不期待这种情况,您会得到该特定错误。这样的声明在C中是允许的(尽管在这种情况下,它会失败,因为已经有一个名为b的变量),但是不在C++中。

1

除了在初始化时,您不能指定给全局范围内的变量。

0

你必须做的

b = 100; 

内主。你不能在一个函数外改变一个已经声明的变量。

0
int b=10; 
//b=100; 

==>这可以在具有一些入口点的程序中的某一点完成。

在C++中不允许使用Stray赋值语句。

该声明与b = b + 1一样好;

0

任何语句都应该在函数内发生。全局变量可以定义并初始化外部函数体。但分配应该在某个功能体内。