C# &引用;“检测到无法访问的代码”;C语言中的错误消息#
我正试图用C语言编写一个程序,以确定一个数字是否是素数。我使用前两个if语句挑出许多选项,然后尝试在最后一个else语句中嵌套一个循环,它告诉我检测到“无法访问的代码”C# &引用;“检测到无法访问的代码”;C语言中的错误消息#,c#,if-statement,unreachable-code,C#,If Statement,Unreachable Code,我正试图用C语言编写一个程序,以确定一个数字是否是素数。我使用前两个if语句挑出许多选项,然后尝试在最后一个else语句中嵌套一个循环,它告诉我检测到“无法访问的代码” public static bool primeNumber () { Console.Write ("Please enter a number to see if it is a prime number: "); int num = int.Parse (Console.ReadLi
public static bool primeNumber ()
{
Console.Write ("Please enter a number to see if it is a prime number: ");
int num = int.Parse (Console.ReadLine ());
if (num % 2 == 0)
return false;
else if (num % 5 == 0)
return false;
else {
for (int i = 3; i < num / 2; i += 2)
{
if (num % i == 0)
return false;
else
return true;
}
}
}
公共静态布尔素数()
{
Console.Write(“请输入一个数字,看看它是否是质数:”);
intnum=int.Parse(Console.ReadLine());
如果(数值%2==0)
返回false;
else if(num%5==0)
返回false;
否则{
对于(int i=3;i
这里有两个问题:
- 不可达代码
- 方法并不是在所有情况下都返回值
public static bool primeNumber (int num)
{
for (int i = 0; i < num; i++)
{
if (i < 10)
return false;
else
return true;
}
}
- 如果我们遇到一个证明测试的数字(即,它不是质数),那么只在循环中返回,我们将消除无法访问的代码问题
- 然后,如果我们设法运行循环直到完成,我们无法证明它不是质数,因此它是质数,然后我们返回
true
意见:您不应该有一个提示用户然后返回答案的函数。相反,我将编写以下()程序:
void Main()
{
Console.Write(“请输入一个数字,看看它是否是质数:”);
intnum=int.Parse(Console.ReadLine());
if(素数(num))
WriteLine(num+“是一个素数”);
其他的
WriteLine(num+“不是质数”);
}
公共静态布尔素数(int num)
{
如果(数值%2==0)
返回false;
else if(num%5==0)
返回false;
否则{
对于(int i=3;i
您的for
循环在这里什么都不做,因为它在第一次运行时返回,所以
i += 2
永远也达不到
您的整个
for
循环相当于一个返回true
您尝试过调试吗?这里无法访问的代码是什么?编译器指出了一些代码,你能这样做吗?或者你的意思是“并非所有代码路径都返回一个值”,这才是真正的错误?@Harry无法对无法编译的代码运行调试器。@hvd如果问题真的是“检测到无法访问的代码”,那么它将是一个警告,而不是一个错误。我怀疑Lasse是对的,OP可能意味着“并非所有代码路径都返回值”,这是一个编译器错误。
public static bool primeNumber ()
{
Console.Write ("Please enter a number to see if it is a prime number: ");
int num = int.Parse (Console.ReadLine ());
if (num % 2 == 0)
return false;
else if (num % 5 == 0)
return false;
else {
for (int i = 3; i < num / 2; i += 2)
{
if (num % i == 0)
return false;
}
return true;
}
}
void Main()
{
Console.Write ("Please enter a number to see if it is a prime number: ");
int num = int.Parse (Console.ReadLine ());
if (primeNumber(num))
Console.WriteLine(num + " is a prime number");
else
Console.WriteLine(num + " is a not prime number");
}
public static bool primeNumber (int num)
{
if (num % 2 == 0)
return false;
else if (num % 5 == 0)
return false;
else {
for (int i = 3; i < num / 2; i += 2)
{
if (num % i == 0)
return false;
}
return true;
}
}
i += 2