不同数据类型的两个数作比较的时候一定要强制转换数据类型吗?
本帖最后由 比特阿尔法 于 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:} 虽然你没有写,但是在执行到那一步的时候还是会默认的把数据转换成k所声明的类型。你可以单步debug执行到啊这一步看看。
写了就是防止你所用的编译器万一不支持转换或者转换错类型。 丶忘却的年少o 发表于 2017-10-1 08:42
虽然你没有写,但是在执行到那一步的时候还是会默认的把数据转换成k所声明的类型。你可以单步debug执行到啊 ...
嗯嗯,谢谢大神解答
页:
[1]