为了乘以 int 数组元素,代码工作正常,但如果我将 while 条件更改为 (arrn[i] != ' ') 它会给出像 '25199232' 这样的大数字

问题描述 投票:0回答:1

下面的代码目前工作正常,在本例中将所有数字相乘得出答案 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);
    
}
arrays c integer
1个回答
0
投票

一旦

i
为 3,您就读到了数组末尾。 你的两个条件都不能阻止这种情况的发生。 这样做会在代码中触发未定义的行为

当您有未定义的行为时,无法保证您的代码会做什么。 它可能会崩溃,可能会输出奇怪的结果(就像您的备用定义的情况一样),或者它可能看起来工作正常(就像在您的原始代码中一样)。

您需要将数组的大小传递给函数,然后用它来确定何时停止迭代。

© www.soinside.com 2019 - 2024. All rights reserved.