【发布时间】:2021-09-12 07:24:39
【问题描述】:
这是毕达哥拉斯三元组的代码。有人可以在下面解释if 语句的工作原理吗?
int main()
{
int a, b;
float c;
//calculate the another side using Pythagoras Theorem
//a*a + b*b = c*c
//c = sqrt(a*a+b*b)
//maximum length should be equal to 30
for(a=1;a<=30;a++)
{
for(b=1;b<=30;b++)
{
c = sqrt(a*a+b*b);
if(c == (int)c)
{
printf("(%d, %d, %d)\n",a,b,(int)c);
}
}
}
}
【问题讨论】:
-
if 语句只是检查浮点变量
c是否与其等效的整数相同(通过类型转换c到int)。 -
这是一个尝试检查
sqrt的结果是否为整数,但是如果结果超出int类型范围,它将失败。 -
一般来说,每当有人觉得需要进行 C 风格转换(如
(int) c)时,就应该将其视为出现问题的危险信号。 -
所以我们要检查计算出的
c是否是一个整数/整数?如果是,那么我们把它作为三角形的边。 -
@Someprogrammerdude 你能解释一下吗?
标签: c++ if-statement