C - 主函数不调用子函数?

#include "stdafx.h"
#include <stdio.h>
#define num 600851475143
 
int factor(int fac);
void main()
{
    int i;
    for (i = 1; i <= num&&num%i==0; i++)
    {
        int factor(i);                                                         
    }

}

int factor(int fac)            // to judge if i is a fator
{
    printf("%d", fac);
    return(0);
}

最后什么都不输出,为什么 int factor 函数没有被执行呢?

阅读 3.4k
4 个回答

C 语言力图声明和使用一致,结果反倒造成许多困惑


int factor(int);

声明了一个叫做 factor 的函数,这个函数接受一个 int,返回一个 int


int i;
factor(i);

调用了一个叫做 factor 的函数,传递了 int 型变量 i 给它


int factor(int fac) {}

定义了一个叫做 factor 的函数,这个函数接受一个 int 型参数 fac,返回一个 int


它们的差别是细微的,而功能是截然不同的。
混淆它们会造成各种奇怪的后果——无法编译、无法得到期望的结果……
而这一切的根本原因在于,没有明确这三者之间的区别。


附录:
教你如何阅读 C 语言的声明

http://www.geeksforgeeks.org/...

中文解释参见我在 数组的大小的问题 的答案

简单,因为没有呼叫factor函数。

int factor(i); //function prototype
factor (i); //呼叫factor函数
新手上路,请多包涵
#include <stdio.h>
#define num 600

int factor(int fac);
void main()
{
    int i;
    int j;
    for (i = 1; i <= num; i++)
    {
        if(num%i==0)
            j = factor(i); //function prototype
    }

}

int factor(int fac)            // to judge if i is a fator
{
    printf("%d\n", fac);
    return 0;
}

前面加了int 表示声明,这个时候函数没有执行

没见过int factor(i)这样调用函数的,你编译没报错吗?int factor(int)或者int factor(i)都是函数声明。int i; factor(i);函数调用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏