黑马程序员技术交流社区

标题: 突然发现个十分基础的问题·······但是求高深回答 [打印本页]

作者: 黑小强    时间: 2014-11-26 22:49
标题: 突然发现个十分基础的问题·······但是求高深回答
为啥全局变量
class a{
int x;
x = 5;
public void test()
{
     int y ;
     y =5 ;
}
}
会出现错误

局部变量可以了

各姿势百度依然找不到高深解说········

幻想·····是不是函数体外赋值这操作不能进行
函数体外进行操作都有哪些约束
作者: xiaochongbojue    时间: 2014-11-27 09:24
x = 5; 是一条语句,在一个类中要么是 成员,要么是函数,你弄出来一条语句当然错了
作者: qingshan    时间: 2014-11-27 10:35
你的意思是不是在函数外定义一个全局变量int x=5; 在函数内定义一个局部变量 int y=5;然后外面的是错的。里面的没出错?
作者: 跟上节奏    时间: 2014-11-27 12:51
是不是在类中赋值语句执行不了
作者: qq8921310    时间: 2014-11-27 19:43
不需要高深的回答,。出现错误的原因是因为,
局部变量在被建立的时候必须被初始化、
成员变量会默认初始化。
作者: william_J    时间: 2014-11-27 20:12
是不是类名和主函数名的问题
作者: qq8921310    时间: 2014-11-27 21:49
main函数之前是用来声明和定义全局变量和函数的,并由编译器进行预处理,给那些全局变量和定义的函数分配内存和地址,不能设计可执行代码。

编译器在编译阶段对main函数之前的全局变量进行内存分配,对定义的函数生成可执行的代码,并保留该函数的地址以供main函数调用,而赋值语句操作是一句可执行代码,又没有类似函数指针的东西供main函数调用,所以只能放在main函数内部进行顺序执行。
  
这是网上觉得比较靠谱的解释。
作者: juexinshi    时间: 2014-12-8 13:50
类中的成员只能有方法和字段吧,特殊情形可以加个块语句,你将赋值语句放到这里(只能放在方法或者块语句中)是不符合语法规则的。
作者: ↘宀˙亲哚/    时间: 2014-12-8 14:04
x = 5;这个不能出现在class中,要出现在方法体重
作者: 爱吃小土豆    时间: 2014-12-8 14:17
方法外的是成员变量,方法内的是局部变量。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2