我在开发项目的过程中发现一个问题:
Delphi的全局变量中会自动赋值:
eg:
TForm1=class(TForm)
public:
sum:integer;//sum默认为1
而在过程和函数里的变量默认为一个很大的数(是编译器生成的),为什么不象全局变量一样赋为1呢?
Delphi的全局变量中会自动赋值:
eg:
TForm1=class(TForm)
public:
sum:integer;//sum默认为1
而在过程和函数里的变量默认为一个很大的数(是编译器生成的),为什么不象全局变量一样赋为1呢?
VAR
FORM1 :FROM1;
的后面这样就行了
sum : integer =1;
并不是编译器生成的。过程和函数里的变量的地址是在栈上的,编译器只是给它们分配了一个地址,但并没有初始化它们的值,因此进入到过程和函数中时,值是不确定的; 全局变量并不会自动赋值,你看到的可能是带类型的常量,通常有这样的形式:const
number: Integer = 1;
编译器会给这样的常量自动赋值;
而你举的例子是类中的变量,并不会自动赋值。如果你看到它时它已有了值,可能在什么地方已经赋过值了,比方说在Create()中