我无法完全理解这段代码来检查一个完美的正方形
I'm can't quite wrap my head around this code for checking for a perfect square
我是一个新手,很明显,在我学校的高级 c++ 中,我正在做家庭作业,当我偶然发现这段代码时,试图弄清楚如何确定整数是否是完全平方时遇到了问题。
if (num <= 0 || sqrt(num) != static_cast<int>(sqrt(num)))
throw "Error: The number is not a perfect square.n";
return sqrt(num);
如果可能的话,作为一个例外函数,我只是不太明白|| 之后的那块是如何工作的。并且只是想知道以备将来参考。
最后一部分检查数字是否为整数。
sqrt(num)
将返回一个可能具有小数的数字,static_cast<int>(sqrt(num)))
将返回一个整数。
如果数字有小数, static_cast<int>(sqrt(num)))
将去掉小数点。如果强制转换的值是例如
4.32
静态强制转换将取出小数并返回
4
if 语句检查数字的平方根是否与去掉小数的版本相同
如果平方根不等于去掉小数的平方根,那么它就不是一个完美的平方
再次以数字 4.32 为例
if( sqrt(num) != static_cast<int>(sqrt(num)) )
会变成
if( 4.32 != static_cast<int>(4.32))
这将变成
if(4.32 != 4)
sqrt(num( 将平方根作为浮点数返回。 static_cast将尝试将返回值转换为整数,这将成功并将值截断为整数。 如果 num 是一个完美的平方,这将不做任何事情,并且值将相等。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 试试完美的正方形,你能给点小费吗
- 试图让变量检查数组中的某些内容
- 检查值是否在集合p1和p2中,但不在p3中
- C++概念:如何使用'concept'检查模板化结构的属性?
- 概念TS检查忽略私有访问修饰符
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 如何在C++中检查2D数组中负值的输入验证
- C++:正在检查LinkedList中的回文-递归方法-错误
- 使用for循环检查数组中的重复项
- 如何检查一个c++字符串中有多少相同的字符/数字
- 检查不带转换的扫描格式
- 我无法完全理解这段代码来检查一个完美的正方形
- 编写一个函数,用递归函数检查数字是否是正方形
- 检查4分是否为正方形
- 检查两个正方形是否相互相交
- 检查二维数组中相邻正方形的值