很有趣的一道C语言题

题目要求不允许改变main()函数,只能通过在test()函数中写代码来改变yy的值~~
[codesyntax lang=”c”]

void test(void)
{
//在这写代码
}
void main()
{
	int yy=1;
	test();
	printf("%d",yy);
}

[/codesyntax]
哈哈 当时看了这个题就觉得特别好玩 看了大家的回答更发现自己了解的知识还真是还有很大的欠缺哈 高人太多啦 哈哈哈哈~~~突然又很有奋斗的动力~~为成为计算机很NB的人而努力奋斗哈哈~~
附上几个参考答案,VC++ 6 编译通过。
答案一:
[codesyntax lang=”c”]

void test(void)
{
	int *p;
	p=(int *)&p;
	while (*p!=1)
	{
		p++;
	}
	*p=88888888;
}

[/codesyntax]
(PS:这是出题者自己公布的答案)
答案二:
[codesyntax lang=”c”]

void test(void)
{
	#define yy 9999
	#define int /##/##int
}

[/codesyntax]
(PS:这个很赖皮的说~~哈哈)
答案三:
[codesyntax lang=”c”]

void test(void)
{
	_asm
	{
		push ebp
		mov ebp,[ebp]
		mov dword ptr[ebp-4],0x00000003 //这个0x00000003就是覆盖了y的值
		pop ebp
	}
}

[/codesyntax]
(PS:我认为这是很标准的一个答案。)