编译器对一段简单的代码说“非法指令”

时间:2018-11-28 15:42:02

标签: c

这只是一个简单的代码,用于检查数字是否为质数,我不知道这是问题所在是编译器还是代码。 一点帮助将不胜感激。

代码如下:

#include "stdio.h"
int main()
{
    int n,i,c=0;
    printf ("\n Enter a Number:");
    scanf ("%d",&n);
    for (i=1;i<=n;i++)
    {
         if (n%i==0)
         {
             c++;
         }
     }
     if (c==2)
     {
         printf ("\n Prime Number");
     }
     else
     {
         printf ("\n Not a Prime Number");
     }
     return 0;
}

1 个答案:

答案 0 :(得分:0)

使用时

 #include "stdio.h"

您表示编译器应在编译器已知的特定位置(通常是源文件目录,但根据编译器的不同而有所不同)查找stdio.h,这是由于错误的原因导致的指令迁移错误(执行不良的库)或只是不存在的stdio.h

这就是为什么编译器通常将标准库放在自己的已知位置,并且使用

进行引用的原因
 #include <stdio.h>

由于您使用的编译器未提供详细信息,因此无法知道错误的出处

编辑:您可以逐步测试代码,而不必使用printf和scanf,这可以通过使用测试变量和返回值来完成。正如我已经说过的,由于标准的stdio.h实现,无法确切知道错误指令在哪里生成,但是我的猜测是scanf返回签名,这意味着无法编译的for循环。测试您的代码