繁体   English   中英

下面运行c++程序

[英]Running below c++ program

我最近开始在 c++ 中编码,当我在下面运行代码时它运行良好

class Solution {
public:
    vector<int> twoSum(vector<int> &numbers, int target){
        vector<int> result;
        for (int i = 0; i < numbers.size(); i++) {
            for (int j =i+1 ; j<numbers.size(); j++){
                if (numbers[j] == target - numbers[i]){
                    result.push_back (i);
                    result.push_back (j);
                }
            }
        }
    return result;
    }
    
};

而对于这个它给出

Line 15: Char 5: error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
     }
     ^
 1 error generated.

我不知道为什么,因为两者都是一样的

class Solution {
public:
    vector<int> twoSum(vector<int> &numbers, int target){
        vector<int> result;
        for (int i = 0; i < numbers.size(); i++) {
            for (int j =i+1 ; j<numbers.size(); j++){
                if (numbers[j] == target - numbers[i]){
                    result.push_back (i);
                    result.push_back (j);
                    return result;
                }
            }
        }
    }
    
};

您的两个代码都不相同。

在您的第一个代码中, return语句放置嵌套的 for 循环之后,以便在调用 function twoSum()时始终执行它。

但是,在您的第二个代码示例中, return语句包含在if语句中,因此只有在if语句中的条件得到if才会执行。

因此,从编译器的角度来看,有可能(在您的第二个代码中) if语句中的表达式永远不会计算为true ,因此return语句可能永远不会被执行。

您可以通过在 function 的末尾添加一个return语句来更正您的第二个代码,就像在您的第一段代码中一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM