在使用自定义函数时,出现无法解析外部符号和外部命令的错误,求解决方法

图片说明

求解答!!!!!

回答

错误挺多的,这个报错应该是返回值问题吧。

这里你用到了double和int两种数据类型,double是双精度浮点型,占用空间是八个字节,int是整型,占用两个字节。简单理解的话double用来存比较精

确或者大一点的小数也行,他们的存储规则是不一样的。

每个函数都是有返回类型的,写在函数的最开头也就是函数名前面,当调用函数的时候会通过函数末尾的return语句把一个值返回出来,可以用来赋值或者

做判断语句等。return语句执行时会返回一个值并跳出这个函数(return下面有别的语句的话不会再执行了),而return后面的那个值的数据类型必须与函

数开头写的返回值类型是抑制的(不然计算机很傻的,它可搞不清楚你到底想返回什么类型的数据,不同类型存储规则又不一样,操作方法也不同)。返回

值类型可以写成“void”,就是空类型,也就是说不返回数据,这样就不用写return(准确地说应该是不可以写return语句)。

所以第一个问题就是add方法的返回值类型和return里面写的不一样,return的是int,返回时类型写的是double;

第二个问题是y=add(p,q)小于10这个语句,判断符号的优先级是最高的,所以先进行判断,判断结果在C语言中只有0,1的区分,因此y得到的赋值是0或1,

这个语句本身实质上是个赋值语句,而这个赋值语句对整个程序本身没有任何意义,赋值语句不知道能不能做判断,如果能的话结果肯定为真,因此这个

for循环要不会报错,要不就是死循环;

第三个就是main方法标注的返回值类型为int但是没有return语句。

第四个问题就是,double要占用八个字节,int只占用两个字节,而你的程序中用的值都是很小的整数,用了很多double非常浪费存储空间。

所以改一下:

#include <stdio.h>

int add(int p, int q)

{

return p + q;

}

void main() {

int p, q;

p = q = 0;

for (; add(p, q) < 10; p++)

{

printf("%d ", p);

}

}

所有数据类型改成int,节省存储空间,函数返回值相同,main方法的返回值改为void(因为它不需要返回数据),把多余的y去掉。

以上是 在使用自定义函数时,出现无法解析外部符号和外部命令的错误,求解决方法 的全部内容, 来源链接: utcz.com/a/31048.html

回到顶部