c - 存在 static 关键字时出现意外输出

标签 c static

为什么以下程序给出了意外的输出。

    static int x[] = {1,2,3,4,5,6,7,8};
    int i;
    for (i = 2; i < 6;++i)
      {

         x[x[i]] = x[i];
      }
        for (i = 0; i < 8;++i)
           {

             printf("%d",x[i]);


           }

      }

我希望它是 1 ,2 3,4,5,6,7,8 但编译器说:1,2,3,3,5,6,7,8。 顺便问一下,static 对数组性能有什么影响?

最佳答案

x[x[i]] = x[i];

i =2;

x[2] = 3;

x[3] = x[2];

x[3] = 3;

因此您会看到此输出。您在内部循环中递增 i,因此您将看到外部循环仅执行一次。

关于c - 存在 static 关键字时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189529/

相关文章:

c - 缺少用于 Tcl C 扩展的内置命令 "history"

c - yacc 从非终端获取零值

c - "concatenation" block 内的字符串 'for'

c - 是__attribute __((nonnull))是标准C

c 使用静态变量查找数字的倍数?

c# - 如何确保在不调用任何成员的情况下调用静态构造函数

java |父类和子类中的静态变量 |从父类访问子变量值

Python:同名的常规方法和静态方法

c# - 默认情况下委托(delegate)是静态的吗?

c++ - 有没有办法在函数调用中通过引用传递和通过值显式传递?