delphi 中dword 的数值问题(50)

  • 主题发起人 主题发起人 长相思
  • 开始时间 开始时间

长相思

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);vari:dword;j:dword;k:dword;l:dword;m:dword;beginedit2.Text:=inttostr(integer(i));edit3.Text:=inttostr(integer(j));edit4.text:=inttostr(integer(k));edit5.text:=inttostr(integer(l));edit6.text:=inttostr(integer(m));end;我并没有给变量赋值但是输出的结果是:4367512 1243048 0 0 05个数值还是不一样的 请问这是为什么啊
 
局部变量在栈分配。没有初始化。
 
执行你的程序时,其实提示了变量未被初始化的警告:---------------------------------------------------------[Warning] Unit1.pas(40): Variable 'i' might not have been initialized[Warning] Unit1.pas(41): Variable 'j' might not have been initialized[Warning] Unit1.pas(42): Variable 'k' might not have been initialized[Warning] Unit1.pas(43): Variable 'l' might not have been initialized[Warning] Unit1.pas(44): Variable 'm' might not have been initialized-----------------------------------------------------------
 
简单类型的变量分配法则是,在局部变量时,变量未被初始化,也可能是这种初始化是随机的。若是全局变量,则执行完全初始化。
 
不信你把变量声明改为全局变量,就不会报错了。显示结果也正确了。DELPHI中有一个重要的概念,对于在栈上分配的变量,若为局部变量,则不执行初始化。若全局变量,则执行初始化---------------------------楼主基础不扎实,我记得DELPHI5开发人员指南中这一个讲解还加了重点符号了。
 
十分感谢啊 前天我看见有人用getmem(i:pchar,j:dword)而且j没有初始化 小菜么不太明白 就试一试 结果就出现这个问题了
 
后退
顶部