假结果时增加

时间:2015-10-21 10:51:38

标签: c while-loop increment

我正在开发一个项目,我必须创建一个matrice并初始化它。 所以这就是我对init matrice所做的:

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时,我应该进入matrice[0][0] = 0matrice[1][0] = 1

但是当我打印matrice时,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}的结果?

2 个答案:

答案 0 :(得分:1)

如果您在while()语句中执行了增量操作,则在之前添加1 进入循环体。因此,在第一次迭代中,i的值将为i,而不是1。这就是你永远不会初始化0

的原因

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

循环显示一系列值的更好方法是使用1,而不是for

while

答案 1 :(得分:0)

由于postincrement运算符,首先读取变量的值,并在读取值后将其递增1,因此在代码中,i变量将是&lt;当你在while中进行比较时,比MAXWORD,当进入while体时将等于MAXWORD。

希望这会对你有所帮助。