为什么在C语言的线性搜索中,循环和if的花括号会给予错误的输出?

afdcj2ne  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(88)

当我使用这个函数时,它返回-1,即使数组的元素在那里。

int linear_search(int arr[], int length, int target)
{
   
    for (int i=0; i < n; i++) {
        if (arr[i] == target){
            return i;}
    
        return -1;
    }
}

然后我去掉了花括号,结果成功了

int linear_search(int arr[], int length, int target)
{
    for (int i=0; i < n; i++) 
        if (arr[i] == target) 
            return i;
    
        return -1;
    
}
6pp0gazn

6pp0gazn1#

如果arr[i] != target,第一个函数将在第一次迭代时返回-1,因为在循环中return语句跟在if语句之后。

  • 旁白 *:我一开始看不到隐藏的括号。考虑采用以下格式设置样式之一:
#if 0
    for (int i=0; i < n; i++) {
        if (arr[i] == target){
            return i;}
#else
    for (int i = 0; i < n; i++) {
        if (arr[i] == target) {
            return i;
        }
    }

    // Or:
    for (int i = 0; i < n; i++)
    {
        if (arr[i] == target)
        {
            return i;
        }
    }
#endif

相关问题