C++:cmath里数学函数前面是不是应该有std::

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++:cmath里数学函数前面是不是应该有std::相关的知识,希望对你有一定的参考价值。

C++:cmath里数学函数前面是否应该有std::
就比如说这个程序里的floor前面就没有std::
要是一般的cin前没有std::那可是不行的啊!!!可是这里却还能正常运行,这是为什么啊?
另外,请问C++ cmath里数学函数前面有无std::是否有什么区别?

cmath这个库比较特殊,如果你看过P.J. Plauger写的cmath文件就会发现用的其实还是math.h,只不过已经用using语句打了个包,所以如果是cmath的话,都不需要加std前缀就可以使用,加了也不会有任何区别(如果你没有自己重载过里面的函数的话)。

iostream则不同,一般用以下三种调用方式
1. 如果打算全用STL的namespace,那就在前面加上
#include <iostream>
using namespace std;

这样再调用就可以不加std::

2. 只对某个函数声明,比如要用cin函数
#include <iostream>
using std::cin;

这样也可以不用std:: 前缀

3. 只包含头文件,调用函数时都加上std::前缀,就是你提到的情况
参考技术A 不用,c++里面在头文件下面加上一句using namespace std;就可以基本上不用::std了,还有用::std的情况你短时间内是不会学到的。希望对你有所帮助。 参考技术B <math.h>不用std,但<cmath>必须要用。当你用了using指令,将std扩展为全局作用域时就可以不加std了 参考技术C 没有,只要你在头文件#include<iostream>下面加上using namespace std;即可,就不需要std::了,using namespace std是命名空间。。。

C++中的cmath头文件

问问各位大侠,在VC中#include<cmath>头文件在什么情况下调用,和具体有什么要求,谢谢了。
小弟不胜感激!!!

math.h是C语言的头文件。其实在C++中用math.h也是可以的,C++是兼容C的。
不过推荐的是使用#include,而且必须声明在std命名空间:using namespace std;其中的函数和使用方法几乎完全相同。
VC里面是math.h,cmath是c++标准风格的头文件,位于std命名空间,用法和math.h差不多,都是包含一些常见的数学函数,比如平方、正余弦等等
参考技术A 按命名规则,cmath 应该是math.h的C++版,什么时候用math.h就什么时候用cmath替代。一般是要用到常用的数学函数时调用,比如abs(),sin()等。 参考技术B VC里面是math.h,cmath是c++标准风格的头文件,位于std命名空间,用法和math.h差不多,都是包含一些常见的数学函数,比如平方、正余弦等等
具体参考:http://www.ggv.com.cn/forum/clib/clib.html本回答被提问者采纳
参考技术C 回答

1. ceil()向上取整2. round()四舍五入取整,3. floor()向下取整且以上所有参数必须为double型4.取整与取余double modf (double,double*); 将参数的整数部分通过指针回传,返回小数部分double fmod (double,double); 返回两参数相除的余数绝对值1. int abs(int );求整型的绝对值2. double fabs (double);求实型的绝对值3. double cabs(complex);求复数的绝对值三角函数1、 三角函数double sin(double);正弦double cos(double);余弦double tan(double);正切2 、反三角函数double asin (double); 结果介于[-PI/2,PI/2]double acos (double); 结果介于[0,PI]double atan (double); 反正切(主值),结果介于[-PI/2,PI/2]double atan2 (double,double); 反正切(整圆值),结果介于[-PI,PI]3 、双曲三角函数double sinh (double);double cosh (double);double tanh (double);没有现成的cot三角函数,可以使用tan(PI/2-x)来实现指数与对数double frexp(double value,int exp);这是一个将value值拆分成小数部分f和(以2为底的)指数部分exp,并返回小数部分f,即f2^exp。其中f取值在0.5~1.0范围或者0。double ldexp(double x,int exp);这个函数刚好跟上面那个frexp函数功能相反,它的返回值是x*2^expdouble modf(double value,double *iptr);拆分value值,返回它的小数部分,iptr指向整数部分。double log (double); 以e为底的对数double log10 (double);以10为底的对数double pow(double x,double y);计算x的y次幂fl

以上是关于C++:cmath里数学函数前面是不是应该有std::的主要内容,如果未能解决你的问题,请参考以下文章

C++中的cmath头文件

C++中的<math>和<cmath>有啥区别

c语言和c++头文件在哪些地方有所不同

使用 cmath 的 fmod (C++) 时的不一致

标准对 std::pow、std::log 等 cmath 函数有啥看法?

在 C++ 中使用 std::vector<bool> 对象是不是可以接受,还是应该使用替代方法?