Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从hcf函数中获取控制到达非void函数的末尾_C - Fatal编程技术网

从hcf函数中获取控制到达非void函数的末尾

从hcf函数中获取控制到达非void函数的末尾,c,C,您创建的函数应始终返回int 到达非void函数的末尾意味着具有未定义的行为 这是一个有效的函数,如果没有找到任何内容,它将返回-1 41 | } | ^ inthcf(inta,intb){ int gcd; 对于(inti=0;i,此函数必须返回一些int值——这就是这里的编译器错误 然而,还有许多其他问题 根据定义,两个互质数的gcd为1。如果a和b是互质数,则不会遇到for循环中的返回值 正如tkausl指出的,对于负a或负b,for

您创建的函数应始终返回int

到达非void函数的末尾意味着具有未定义的行为

这是一个有效的函数,如果没有找到任何内容,它将返回-1

           41 | }
              | ^
inthcf(inta,intb){
int gcd;

对于(inti=0;i,此函数必须返回一些int值——这就是这里的编译器错误

然而,还有许多其他问题

  • 根据定义,两个互质数的gcd为1。如果a和b是互质数,则不会遇到for循环中的
    返回值
  • 正如tkausl指出的,对于负a或负b,for循环中的返回也从未遇到过
  • 即使循环运行,也会有一个bug。对于任何
    a>=0
    b>=0
    ,当
    i=1
    时,都会返回1,因为
    a%1==0和&b%1==0
    总是正确的
inthcf(inta,intb){
int gcd;

对于(int i=0;i如果
a
b
为负怎么办?在某些情况下,返回语句将无法到达-您需要在函数末尾添加一些内容初始gcd=-1,而不是返回,您应该使用内部断开循环,最后在函数末尾返回gcd“到达非void函数的结尾意味着路径可能导致错误类型的返回。”不是真的-它意味着程序无效且具有未定义的行为。因此程序可能会炸毁您的烤面包机或以某种方式工作正常或任何可能的情况。
           41 | }
              | ^
int hcf (int a, int b) { 
        int gcd;

        for (int i = 0; i <= a && i <= b; i++) {
               if (a % i == 0 && b % i == 0) {
               gcd = i;
               return gcd;
              }
        }
        return -1;
}