我正在编写代码来解决 4 种颜色和 4 个钉子的主谋难题,这是我遇到问题的代码的摘录。我遇到的问题是,当再次执行循环时,它从 num1,2,3,4 的值开始不会改变,因此我在每个循环结束时返回“r,r,r,r”。我正在尝试使用静态变量来解决此问题:
int readOK = 0;
while (readOK == 0)
{
static int num1 = 0;
static int num2 = 0;
static int num3 = 0;
static int num4 = 0;
int count = 0;
for (num1 = 0; num1 <= 3; num1++)
for (num2 = 0; num2 <= 3; num2++)
for (num3 = 0; num3 <= 3; num3++)
for (num4 = 0; num4 <= 3; num4++)
{
if (num1 == 0)
{
return 'r';
}
if (num1 == 1)
{
return 'g';
}
if (num1 == 2)
{
return 'b';
}
if (num1 == 3)
{
return 'y';
}
if (num2 == 0)
{
return 'r';
}
if (num2 == 1)
{
return 'g';
}
if (num2 == 2)
{
return 'b';
}
if (num2 == 3)
{
return 'y';
}
if (num3 == 0)
{
return 'r';
}
if (num3 == 1)
{
return 'g';
}
if (num3 == 2)
{
return 'b';
}
if (num3 == 3)
{
return 'y';
}
if (num4 == 0)
{
return 'r';
}
if (num4 == 1)
{
return 'g';
}
if (num4 == 2)
{
return 'b';
}
if (num4 == 3)
{
return 'y';
}
count++;
}
Run Code Online (Sandbox Code Playgroud)
为了按照static我认为您期望的方式工作,它需要在函数内声明。然后,每次调用该函数时,该static变量都会保留上一次函数调用结束时的最后一个值。
当static用于全局变量时,它只是将该变量的使用限制在该文件中。
https://www.tutorialspoint.com/cprogramming/c_storage_classes.htm