我为我的C编程大学课程编写了一个程序。无论如何,我不断得到一个不确定的错误。我手动检查了我的数学,没有什么奇怪的。我一直在网上搜索建议,但最终找到同样的事情:它与我的操作有关。但是,我认为我所做的一切并不“奇怪”。
如果有人能帮我发现错误,我会非常感激。
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#define C 3e8 //symbolic constant C
int main() {
/* Initalize variables, including the constant "pi" */
int l1=380E-9, l2=600E-9;
const float pi = 3.14;
float time1 = 1E-14,
time2 = 5E-14,
time3 = 8E-14;
/* I've split up each "y" variable to make it cleaner */
double ySOL1, ySOL2, ySOL3;
double y1_SOL1, y1_SOL2, y1_SOL3;
double y2_SOL1, y2_SOL2, y2_SOL3;
/* Equations to compute time=1E(-14)*/
y1_SOL1 = 3 * (sin(2 * pi*(C / l1)*time1));
y2_SOL1 = 5 * (sin(2 * pi*(C / l2)*time1));
ySOL1 = y1_SOL1 + y2_SOL1;
printf("The value of Y for Time_1 is: %f", ySOL1); //prints value of y for time1
/* Equations to compute time=5E(-14) */
y1_SOL2 = 3 * (sin(2 * pi*(C / l1)*time2));
y2_SOL2 = 5 * (sin(2 * pi*(C / l2)*time2));
ySOL2 = y1_SOL2 + y2_SOL2;
printf("\n\nThe value of Y for Time_2 is: %f", ySOL2); //prints value of y for time2
/* Equations to compute, time=8E(-14) */
y1_SOL3 = 3 * (sin(2 * pi*(C / l1)*time3));
y2_SOL3 = 5 * (sin(2 * pi*(C / l2)*time3));
ySOL3 = y1_SOL3 + y2_SOL3;
printf("\n\nThe value of Y for Time_3 is: %f\n", ySOL3); //prints value of y for time3
return 0;
}
答案 0 :(得分:4)
你除以零。您的变量l1
和l2
应为float
或double
。因为它们是整数,所以它们被截断为零,这在浮点除法中将导致正或负无穷大。 (这就是文本-1.#IND00
的含义)
旁注:如果您正在进行浮点计算,则应该始终使用float
或double
之一,最好是double
。也:
const float pi = 3.14;
这是一个粗略的估计,不是吗?
答案 1 :(得分:2)
将以下声明中的int
更改为double
double l1=380E-9, l2=600E-9;
问题是你在下面的表达式中用零表示:
y1_SOL2 = 3 * (sin(2 * pi*(C / l1)*time2));
因为,l1
是0
。您已将其声明为int
并指定decimal
(380E-9
)的值,并将其转换为zero
。