我正在开发一个项目,我必须创建一个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] = 0
,matrice[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
}的结果?
答案 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。
希望这会对你有所帮助。