c - while false 结果的递增

标签 c while-loop increment

我正在做一个项目,我必须创建一个矩阵并对其进行初始化。 所以这就是我对 init 所做的矩阵:

int     levenshtein(char *string1, char *string2)
{
  int32_t       firstWord = strlen(string1);
  int32_t       secondWord = strlen(string2);
  int32_t       matrice[MAXWORD][MAXWORD]; //MAXWORD = 155
  int32_t       i = 0;
  int32_t       j = 0;

  while (i++ < MAXWORD)
    {
      matrice[i][0] = i;
      matrice[0][i] = i;
    }
}

所以当我打印矩阵时,我应该进入 matrice[0][0] = 0 , matrice[1][0] = 1等等

但是当我打印矩阵时,一切都会很好,除了 matrice[1][0]它等于 MAXWORD .

但是如果像这样递增它就可以完美地工作

while (i < MAXWORD)
  {
    matrice[i][0] = i;
    matrice[0][i] = i;
    i++
  }

为什么 while (i++ < MAXWORD)将改变 matrice[1][0] 的结果(并且只有 matrice[1][0] )在退出 while 之后?

最佳答案

当您在 while() 语句中执行递增时,您将 1 添加到 i 之前 你进入了循环体。所以在第一次迭代中,i 的值将是 1,而不是 0。这就是为什么您从不初始化矩阵[0][0]

将增量移动到循环的末尾意味着您使用当前值输入它。所以第一次通过循环 i 将是 0,而不是 1

循环遍历一系列值的更好方法是使用 for,而不是 while:

for (i = 0; i < MAXWORD; i++) {
    matrice[i][0] = i;
    matrice[0][i] = i;
}

关于c - while false 结果的递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33257394/

相关文章:

python - 如何使用 range() 在 Python 中循环列表

C - 链表段错误

c - 虽然 C 中的循环分配没有按预期工作

java - 我的 while 循环不会因中断而停止?

java - GAE 数据存储增量 ID

c - 如何防止 valgrind 将静态变量报告为泄漏?

c - 为什么我的 ICMP 序列号没有递增? (C 套接字编程)

java - (reader.ready()) 和使用 for 循环读取文件有什么区别?

php - 如何增加每个页面加载的计数器(在 PHP 中)?

javascript - 数组中的递增函数