浮点:无效的错误代码C

浮点:无效的错误代码C,c,runtime-error,C,Runtime Error,该程序以列数作为输入,并应返回相等的基数3。但在tc中,它给出了一个“浮点:无效”错误 #包括 #包括 #包括 整数*计数(整数); main() { int i,j,n,*a; printf(“n=”); scanf(“%d”和“&n”); a=计数(n); 对于(i=0;i而言,在编译代码时,很可能没有链接数学库。此时: for(j=0;j<n-1;j--) 当j变为正值时,循环将(可能)终止。如果确实是这样的话,那么您的过时编译器就会出现这种情况 当你计算 pow(3,n-1-j)

该程序以列数作为输入,并应返回相等的基数3。但在tc中,它给出了一个“浮点:无效”错误

#包括
#包括
#包括
整数*计数(整数);
main()
{
int i,j,n,*a;
printf(“n=”);
scanf(“%d”和“&n”);
a=计数(n);

对于(i=0;i而言,在编译代码时,很可能没有链接数学库。

此时:

for(j=0;j<n-1;j--)
j
变为正值时,循环将(可能)终止。如果确实是这样的话,那么您的过时编译器就会出现这种情况

当你计算

pow(3,n-1-j)
指数变成一个大的正值,到时候会溢出


我想这是您的根本问题。

不确定您想要实现什么,但是修复j的for循环不会崩溃

将代码中两处的循环修复为:


for(j=0;jn的值是多少?
n
?你能指出哪一行代码返回了这个错误,我们可以从那里开始工作。去拿一本叫K&R的书,不要用turbo C,否则人们不会同情你。这是什么
(j=0;j30岁的16位编译器,你正在认真地尝试在现代64位系统上使用它,并期望得到可靠的结果?是的,还要学习一些C。你是否根据
pow
函数的原型使用了正确的语法。原型见
math.h
。他的根本问题是对丁的C。没有错,但结合使用大量过时的工具和毫无疑问的文档(如果有的话)这是一种灾难。@jwenting即使在现代编译器上,这个程序也会导致浮点溢出。@DavidHeffernan您好,先生,+1实际上您在这方面是对的,但最重要的是,他应该从头开始,因为他做事的方式可能会让他陷入进一步的问题,所以我们都知道,他不知道我与这些人交流:)@DavidHeffernan是的,会的。因此,他对该语言缺乏基本的理解,而可怕的过时工具(例如,现代工具可能至少会发出警告)更是雪上加霜@jwenting现在我同意你的看法,因为提问者接受了给出代码的答案,而不是解释现有代码失败的答案。这通常表明提问者对理解和学习不感兴趣。
0, -1, -2, -3, -4, ...
pow(3,n-1-j)