比特阿尔法 发表于 2017-10-1 01:47:57

不同数据类型的两个数作比较的时候一定要强制转换数据类型吗?

本帖最后由 比特阿尔法 于 2017-10-1 01:49 编辑

#include <stdio.h>
#include <math.h>

int main()
{
      int count = 4; // 已知2,3,5,7是素数
      int i, j, k;
      _Bool flag = 1;

      for (i = 9; i < 10000; i++)
      {
               k = (int)sqrt((double)i);

                for (j = 2; j <= k; j++)
                {
                        if (i % j == 0)
                        {
                              flag = 0;
                              break;
                        }
                }

                if (flag)
                {
                        count++;
                }
                else
                {
                        flag = 1;
                }
      }

      printf("10000以内共有%d个素数!\n", count);

      return 0;
}



这是《带你学c带你飞》S1E15 动手题 第二题的答案,小甲鱼在将 j 与 i 的平方根进行比较时,做了强制转换。k = (int)sqrt((double)i);

                for (j = 2; j <= k; j++)



而我自己写的时候没有做转换,结果也是正确的。

那么小甲鱼的做法是怎么考虑的呢,这样做强制类型转换有何好处呢?{:5_94:} 求大神解答{:5_105:}

丶忘却的年少o 发表于 2017-10-1 08:42:24

虽然你没有写,但是在执行到那一步的时候还是会默认的把数据转换成k所声明的类型。你可以单步debug执行到啊这一步看看。
写了就是防止你所用的编译器万一不支持转换或者转换错类型。

比特阿尔法 发表于 2017-10-1 15:37:22

丶忘却的年少o 发表于 2017-10-1 08:42
虽然你没有写,但是在执行到那一步的时候还是会默认的把数据转换成k所声明的类型。你可以单步debug执行到啊 ...

嗯嗯,谢谢大神解答
页: [1]
查看完整版本: 不同数据类型的两个数作比较的时候一定要强制转换数据类型吗?