"not all control paths return a value" in c,分数歧视

"not all control paths return a value" in c, Fractional discrimination

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>

bool isPrime(unsigned number)
{
    unsigned i;
    for (i = 2; i < number; ++i)
    {
        if (number % i == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

int main()
{
    unsigned int a = 0;
    scanf("%u", &a);

    bool flag = isPrime(a);
    if (flag)
    {
        printf("%u is a prime number", a);
    }
    else
    {
        printf("%u is not a prime number", a);
    }

    return 0;
}
1>------ Build started: Project: prime.c, Configuration: Debug x64
------ 1>main.c `1>C:\Users\neuez\source\repos\test\prime.c\main.c(22): warning
C4715:` 'isPrime': not all control paths  return a value

1>Done building project "prime.c.vcxproj".
======== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped =======

我想我返回了所有控制通道的结果,但我不知道为什么会弹出警告。

您的 isPrime 函数并不总是 return 一个值。

bool isPrime(unsigned number)
{
    unsigned i;
    for (i = 2; i < number; ++i)
    {
        if (number % i == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

如果 number 参数小于 2 会发生什么?在这种情况下,for for 循环不会 运行,并且不会执行任何 return 语句。

考虑 number = 1 (or 2).

的情况

这里因为设置的条件,不会进入循环

在这种情况下,您到达函数末尾时没有任何 return。