while false 结果的递增

incrementation in while false result

我正在做一个项目,我必须创建一个矩阵并对其进行初始化。 所以这就是我对 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] = 0matrice[1][0] = 1

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

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

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

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

因为后自增运算符,先读取你的变量的值,读完后自增1 所以在你的代码中,当你在while, and 进入while体时等于MAXWORD。

希望对您有所帮助。

当您在 while() 语句中执行递增时,您将 1 添加到 i before 您输入的正文循环。所以在第一次迭代中,i 的值将是 1,而不是 0。这就是为什么你从不初始化matrice[0][0].

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

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

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