头文件<cmath>和<cstdlib>提供了从C语言继承下来的全局性数学函数。这些函数包括pow()、exp()、sqrt()、log()、log10()、log()、sin()、cos()、tan()、sinh()、cosh()、tanh()、asin()、acos()、atan()、atan2()、ceil()、floor()、fabs()、fmod()、frexp()、ldexp()和modf()。
在C语言中,这些函数均在头文件<math.h>和<stdlib.h>中声明。在C++中,这些函数均改在头文件<cmath>和<cstdlib>中声明。
和C不同的是,C++将某些操作函数针对不同型别进行了重载,从而导致部分C函数失去了价值。例如C语言提供的abs()、labs()和fabs(),分别计算int、long、double类型变量或常数的绝对值;而C++提供的abs()完成了重载,具备了上述3个函数的全部功能。
头文件<cstdlib>内定义的数学函数包括abs(),labs(),div(),ldiv(),srand(),rand()。确切地说,所有浮点数的数学函数均可对float、double、longdouble3个型别实现重载,但同时也带来了新的问题,当传入的数值类型为整数时,会引发模棱两可的情况。
例如,
应该是:(www.xing528.com)
或
程序员在处理这一问题时,还没有做到尽善尽美。有些提供了重载,有些遵循标准规格,有些针对所有数值类型加以重载,有些借助预处理器在各种策略间切换。这使得在应用程序的开发过程中,模棱两可的情况时有发生。可移植性高的代码,要求参数型别有精确的匹配。
下面给出上述数学函数的声明形式:
总结
本小节仅简单介绍了部分全局性数学函数,这些函数的使用已经非常普遍。希望读者在学习和今后的程序编写过程中,尽量多使用这些全局性数学函数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。