在Charles Petzold第五版的《windows程序设计》中,看到这样一些代码:
#define DEVISIONS 5
static BOOL fstate[DEVISIONS][DEVISIONS];
........
if(x<DEVISIONS && y<DEVISIONS)
fstate[x][y]=fstate[x][y]^1;
一开始看到觉得很诧异,fstate[DEVISIONS][DEVISIONS]没有初始化啊,那怎样进行fstate[x][y]=fstate[x][y]^1啊?
经过查阅和验证才知道,static定义的变量如果没有给他们初始化和赋初值,系统会默认为0或者“/0”的。
验证如下:
(在VC++6.0Z中)
#include<stdio.h>
#include<windows.h>
int main()
{
static BOOL fstare[5][5];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++