c – 如果带有括号的循环中的return语句,则会显示错误可能到达非void函数的结尾但不包含没有括号的循环

c – 如果带有括号的循环中的return语句,则会显示错误可能到达非void函数的结尾但不包含没有括号的循环,第1张

概述在第一种情况下,它显示错误:控制到达非void函数的结尾. 但在第二种情况下,即使代码与第一个代码完全相同,它也不会显示任何错误.有人可以告诉我在编译器中两种情况下究竟发生了什么? 同样为什么案例1中的退货声明未得到承认 //case 1 int checkA(const vector<int>& a, int n, int k) { for(int i=0; i< 在第一种情况下,它显示错误:控制到达非voID函数的结尾.
但在第二种情况下,即使代码与第一个代码完全相同,它也不会显示任何错误.有人可以告诉我在编译器中两种情况下究竟发生了什么?
同样为什么案例1中的退货声明未得到承认

//case 1    int checkA(const vector<int>& a,int n,int k)    {        for(int i=0; i<n; i++)        { if(k%a[i])                return 0;            return 1;        }    }//case 2    int checkA(const vector<int>& a,int k)    {        for(int i=0; i<n; i++)         if(k%a[i])                return 0;            return 1;    }
解决方法 它没有做同样的事情.如果您使用更好的格式发布了代码段,则会看到以下内容:

//case 1int checkA(const vector<int>& a,int k){    for(int i=0; i<n; i++)    {        if(k%a[i])            return 0;        return 1;    }}

案例2是

//case 2int checkA(const vector<int>& a,int k){    for(int i=0; i<n; i++)        if(k%a[i])            return 0;    return 1;}

在情况1中,检查第一个数组元素(a [0])是否除以k,如果是,则在同一次迭代中立即返回1.问题是,如果数组有零个元素(n为0),则根本没有第一次迭代,因此,没有命中任何return语句(返回0和返回1只能在第一次迭代时发生).

情况2的最终返回1仅在循环之后发生,如果没有数组元素触发先前的退出.

总结

以上是内存溢出为你收集整理的c – 如果带有括号的循环中的return语句,则会显示错误可能到达非void函数的结尾但不包含没有括号的循环全部内容,希望文章能够帮你解决c – 如果带有括号的循环中的return语句,则会显示错误可能到达非void函数的结尾但不包含没有括号的循环所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1212163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存