#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 =======
我想我返回了所有控制通过的结果,但是我不知道为什么会弹出警告。
答案 0 :(得分:1)
您的isPrime
函数并不总是返回值。
bool isPrime(unsigned number)
{
unsigned i;
for (i = 2; i < number; ++i)
{
if (number % i == 0)
{
return false;
}
else
{
return true;
}
}
}
如果number
参数小于2
会发生什么?在这种情况下,将不会运行for
循环,也不会执行任何return
语句。
答案 1 :(得分:1)
考虑number = 1 (or 2)
的情况。
在这里,由于设置的条件,您将不会进入循环。
在这种情况下,您将到达函数末尾而没有任何回报。