gpt4 book ai didi

C for循环,测试数组元素给出奇怪的结果

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:40 24 4
gpt4 key购买 nike

我不知道我做错了什么。我想打印非零元素,下面的代码没有打印出来。

#include <stdio.h>

int main ()
{
int arr[4] = { 0, 3, 0, 7 };
// print non zero elements
for (int i = 0; i != 4 && arr[i] != 0; ++i)
printf("%d\t%d\n", i, arr[i]);
}

但是如果我像下面这样移动数组测试,它就会起作用:

#include <stdio.h>

int main ()
{
int arr[4] = { 0, 3, 0, 7 };
// print non zero elements
for (int i = 0; i != 4; ++i) {
if (arr[i] != 0)
printf("%d\t%d\n", i, arr[i]);
}
}

怎么了?

最佳答案

第一个循环与第二个循环不同的原因是第一个循环在 i 到达数组中第一个零的位置时立即退出,而第二个循环总是执行所有一直到第四个元素。

你的第一个循环等同于:

for (int i = 0; i != 4; ++i) {
if (arr[i] != 0)
printf("%d\t%d\n", i, arr[i]);
else
break;
}

看到零时中断是使第一个循环提前终止的原因。

关于C for循环,测试数组元素给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31507939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com