首先,我什至不确定你是否称它为成员(member),想不出更好的词。
我正在尝试学习调试和数组的基础知识 - 所以我想从内存中创建类似于插入排序的东西(这样会犯错误),然后调试程序。
void findingsmaller (int *array, int num_inputs){
int a = 0;
int b = 1;
for ( b=1; b == num_inputs-1; b++ ) {
if ( array[a] > array[b] ) {
goleft(array, a, b);
a++;
}
}
}
假设我们在数组中有这个:6 5 3 1 8 7 2 4
. array[a] 应该是 6
array[b] 应该是 5
. 6 > 5
所以我们应该输入函数来查找数组左侧第一个较小的数字。
从我的调试 session 来看,条件似乎是 FALSE
所以我不输入 goleft
根本。更具体地说,Step into
忽略它,测试 printf 也没有执行。我假设数组比较没有正确编写,更正是什么?
WHOLE CODE如果有人想查看其他可能的错误。
提前致谢!
编辑:<= num_inputs
是正确的,不知何故我认为for
有(range1, range2, change)
而不是 (start, condition, change)
.无论如何,现在问题似乎是我的goleft
函数执行其 do-while
循环一次太多了,尽管它不应该超过那个条件。
EDIT2:修复了其他几个错误。
我在
main
中打印现在是for( ; i <= num_inputs-1; )
我的
goleft
由于条件会进行太多迭代,固定为... while ( a >= 0 && array[a] > array[b] )
我的
findingsmaller
只会在下一个数字较小时运行,但在数字较大时不执行任何操作。例如6 8
该程序将无法正常运行。已添加else {a++}
我的固定 code对于任何对更改比较感兴趣的人。
最佳答案
只要条件为真,for循环就会执行。
for ( ;Condition; )
{
// body
}
在您的 for 循环中,如果输入大于 1,则条件始终为 False。
关于c - 函数中的数组成员比较不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099098/