全桥整流 发表于 2021-11-29 21:10:15

关于函数的定义和goto语句的疑问

#include <stdio.h>
void nember()
{
                printf("不是素数");
}

void main()
{
//        void nember()
//void nember()
//{
//                printf("不是素数");
//}
       
       
        int x,t;
        printf("输入一个数");
        scanf("%d",&x);
        for(int i =0;i<x;i++)
        {
                if(x/i!=0)
                {
                        goto nember        ;       
                }
               
        }
        printf("是素数");
       
        //return 0;
}

23        4        C:\Users\lyl\Desktop\c语言\古法求素数.c        label 'nember' used but not defined

为什么会报错呢?

jackz007 发表于 2021-11-29 21:14:16

         goto 语句失去目标,goto nember,作为目标的标号 nember 在哪里?

番杰 发表于 2021-11-29 21:28:16

本帖最后由 番杰 于 2021-11-30 08:20 编辑

goto不是你这么用的;
你这个相当于使调用一个名字叫“nember”的函数;
正常使用goto跳转的都是在同一个函数中的:

另外,你这个报错原因就是因为:
你要跳转到”nember”
但是在main函数中却没有;
所以就会报错;
就像你用到i,却没定义一个道理;

这是正常goto写法:

#include <stdio.h>

int main()
{
      int x,t;
      printf("输入一个数");
      scanf("%d",&x);
      for(int i =0;i<x;i++)
      {
                if(x/i!=0)
                {
                        goto nember      ;      
                }
               
      }
      printf("是素数");
      
    nember:
         printf("不是素数");

      return 0;
}
页: [1]
查看完整版本: 关于函数的定义和goto语句的疑问