这只是为了一些额外的功劳,我有一个简单的c程序来计算平方根,最初程序会跑掉无休止地计算它们所以我想要一个条件检查变量的值,如果它更小或等于i +(9 ^ 32)循环,如果不打印结束。
不幸的是,我似乎无法让if条件正常工作
如果任何人有任何建议会很棒
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
int m, i;
if ( argc > 1) {
m = atoi(argv[1]);
} else {
m = 1;
}
for( i = 1; i <= i+1; i++) {
double param, result;
param = i;
result = sqrt (param);
printf ("sqrt(%lf) = %lf\n", param, result );
sleep(0.5);
}
if( i <= (i + pow(9,32))
{ return (0); }
else { printf("end");
}
}
答案 0 :(得分:0)
在for
循环中添加测试中的条件:
for( i = 1; i < INT_MAX; i++) {
注1:
你应该早点停下来:很少有编译器有int
(或double
)类型,足够9 ^ 32。我已将其替换为最大int
值。
注2:
当前条件i <= i+1
将导致代码循环,直到i
溢出。溢出将导致未定义的行为,尽管在大多数实现中i
将换行为负值,从而导致循环终止。
答案 1 :(得分:-1)
您需要了解浮点精度。提示:数字double
实现不像数学中使用的“真实”实数。有限制,9 32 是一个非常大的数字,不能确定你可以将它添加到另一个double
并保持精确。