如何在 for 循环中使用静态变量在 C 中的多个循环中维护一个值

KYP*_*H4N 2 c static

我正在编写代码来解决 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)

Sar*_*oma 5

为了按照static我认为您期望的方式工作,它需要在函数内声明。然后,每次调用该函数时,该static变量都会保留上一次函数调用结束时的最后一个值。

static用于全局变量时,它只是将该变量的使用限制在该文件中。

https://www.tutorialspoint.com/cprogramming/c_storage_classes.htm