#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 函数没有被执行呢?
C 语言力图声明和使用一致,结果反倒造成许多困惑
声明了一个叫做
factor
的函数,这个函数接受一个 int,返回一个 int调用了一个叫做
factor
的函数,传递了 int 型变量 i 给它定义了一个叫做
factor
的函数,这个函数接受一个 int 型参数 fac,返回一个 int它们的差别是细微的,而功能是截然不同的。
混淆它们会造成各种奇怪的后果——无法编译、无法得到期望的结果……
而这一切的根本原因在于,没有明确这三者之间的区别。
附录:
教你如何阅读 C 语言的声明
http://www.geeksforgeeks.org/...
中文解释参见我在 数组的大小的问题 的答案