#include "stdafx.h"
int X,Y;//X=1,Y=7;
unsigned long rng( void )
{
if ( X &
0x80000000L ) X = ( (X ^
0x00000057L) <<
1) |
0x00000001L;
else X = X <<
1;
Y =
1664525L*Y +
1013904223L;
return (X + Y);
}
int _tmain(int argc, _TCHAR* argv[])
{
X=6,Y=9;
rng();
return
0;
}
第一次: 用 int X,Y; 编译运行后,X,Y的值始终为0,0 (X=6,Y=9; 没效果,是什么原因?)
第二次: 改用 X=1,Y=7; 编译运行,结果如期望,会改变;
第三次: 再改用 int X,Y; (不清理项目),结果如期望,会改变;开始是1,7;然后是 6,9
第四次:清理项目,再用 int X,Y; 编译运行后,X,Y的值始终为0,0 (X=6,Y=9; 没效果,是什么原因?)
问题1:全局变量没有初始化的话,会始终是 0 吗?
问题2: 清理和不清理后的 效果,为什么不一样?
编译环境: VS 2010 |