"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。
#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。