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