-2

这只是为了一些额外的功劳,我有一个简单的 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");
  }
}
4

2 回答 2

0

for在循环中的测试中添加条件:

for( i = 1; i < INT_MAX; i++)  {

注1:

您可能应该更早地停止:很少有编译器具有足够大的int(或)类型以容纳 9^32。double我已经用最大值替换了它int

笔记2:

当前条件i <= i+1将导致代码循环直到i溢出。溢出将导致未定义的行为,尽管在大多数实现i中将包装为负值导致循环终止。

于 2012-10-11T13:08:15.367 回答
-1

您需要阅读浮点精度。提示:double实现的数字不像数学中使用的“真实”实数。有限制,而且 9 32是一个很大的数字,不确定是否可以将其添加到另一个double并保持精度。

于 2012-10-11T13:07:51.113 回答