下面的代码目前工作正常,在本例中将所有数字相乘得出答案 6,只是想了解如果我使用 (arrn[i] != ' ') 或 (arr) 则 while 语句不起作用或 (arr != 0) 它给出错误的输出。
int perm(int arrn[])
{
int i =0;
int z;
int t = 1;
int result =1;
while(arrn[i] < 9){
z = arrn[i];
t = t * z;
//printf("%d", z);
i++;
}
printf("%d", t);
}
int main()
{
int list1[] = {1,2,3};
perm(list1);
}
一旦
i
为 3,您就读到了数组末尾。 你的两个条件都不能阻止这种情况的发生。 这样做会在代码中触发未定义的行为。
当您有未定义的行为时,无法保证您的代码会做什么。 它可能会崩溃,可能会输出奇怪的结果(就像您的备用定义的情况一样),或者它可能看起来工作正常(就像在您的原始代码中一样)。
您需要将数组的大小传递给函数,然后用它来确定何时停止迭代。