最近我了解了c ++中的一个特殊功能:__gcd(A,B)
。这将返回A和B的最大公约数。
#include<iostream>
#include<algorithm>
using namespace std;
main()
{
cout<<__gcd(10,40); //op: 10
}
使用2个下划线启动函数定义是否有任何特殊原因?
它可以像gcd(A,B)
一样简单,就像其他STL函数一样。
答案 0 :(得分:12)
以两个下划线开头的名称是为实现保留的,这意味着您不允许在代码中定义此类名称,并且没有标准保证这些名称在它们存在时的含义。但是,供应商可能会选择记录某些此类名称,在这种情况下,您可以将其与供应商记录的产品一起使用。
答案 1 :(得分:3)
在C ++ 17中,有针对GCD和LCM的标准库函数。
#include <iostream>
#include <numeric>
int main ()
{
int a, b;
std::cin >> a >> b;
std::cout << std::gcd(a,b) << '\n';
return (0);
}