#include<stdio.h>
void printf_letter2(void);
int ctr;
char letter1 = 'x';
char letter2 = '=';
int main()
{
for (ctr = 0; ctr < 10; ctr++)
{
printf("%c", letter1);
printf_letter2();
}
}
void printf_letter2(void)
{
/*static int ctr = 0;在函数里定义静态变量之后,才停止无休止循环*/
for (ctr = 0; ctr < 2; ctr++)
printf("%c", letter2);
}
以上就是源码,将倒数第4行注释掉之后,结果就是x==x==...死循环,只有把倒数第4行还原回来才能正常显示。而注释掉的时候,ctr使用的是全局变量,在开头已经声明好了,而主函数中是调用了10次printf_letters函数,应该是显示10个x==才对吧。
之后做了一个测试,将主函数中调用的printf_letter2();移出for循环,显示的是xxxxxxxxxx==,这就说明了printf_letter2函数本身没问题啊
而在for循环体中,我也并未传参,为何会出现这样的死循环?
void printf_letter2(void);
int ctr;
char letter1 = 'x';
char letter2 = '=';
int main()
{
for (ctr = 0; ctr < 10; ctr++)
{
printf("%c", letter1);
printf_letter2();
}
}
void printf_letter2(void)
{
/*static int ctr = 0;在函数里定义静态变量之后,才停止无休止循环*/
for (ctr = 0; ctr < 2; ctr++)
printf("%c", letter2);
}
以上就是源码,将倒数第4行注释掉之后,结果就是x==x==...死循环,只有把倒数第4行还原回来才能正常显示。而注释掉的时候,ctr使用的是全局变量,在开头已经声明好了,而主函数中是调用了10次printf_letters函数,应该是显示10个x==才对吧。
之后做了一个测试,将主函数中调用的printf_letter2();移出for循环,显示的是xxxxxxxxxx==,这就说明了printf_letter2函数本身没问题啊
