C语言标准库(了解)

[+]

概述

      C语言函数手册也称为C标准库。C标准库由在15个头文件中声明的函数、类型定义和宏组成,每个头文件都代表了一定范围的编程功能。有人说,C标准库可以分为 3 组,如何正确并熟练的使用它们,可以相应的可区分出 3 个层次的程序员:

合格程序员:

熟练程序员:

优秀程序员:

一,里的数学计算公式介绍   

    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] (y/x的反正切值)
   3 、双曲三角函数 
    double sinh (double); 
    double cosh (double); 
    double tanh (double); 
   4 、指数与对数 
    double exp (double);求取自然数e的幂 (以e为底的x次方值)
    double sqrt (double);开平方 
    double log (double); 以e为底的对数 
    double log10 (double);以10为底的对数 
    double pow(double x, double y);计算以x为底数的y次幂 
    float powf(float x, float y); 功能与pow一致,只是输入与输出皆为浮点数 
         double pow10(double x, double y);求10的x次方(次幂)
  5 、取整 
   double ceil (double); 取上整 (即求不小于某个数的最小整数)
   double floor (double); 取下整 (即求不大于某个数的最大整数)
  6、绝对值 
    double fabs (double);求绝对值 
    double cabs(struct complex znum) ;求复数的绝对值 
         int        abs(int);      求整数的绝对值
         long      labs(long);  取长整型绝对值7 、标准化浮点数 
   double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] ) 
   double ldexp (double x, int p); 与frexp相反, 已知x, p求f 
 7 、取整与取余 
  double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 
  double fmod (double, double); 返回两参数相除的余数 (对浮点数取模)
 8 、其他 
  double hypot(double x, double y);已知直角三角形两个直角边长度,求斜边长度 
  double ldexp(double x, int exponent);计算x*(2的exponent次幂) 
  double poly(double x, int degree, double coeffs [] );计算多项式 
       double round( double); 四舍五入取整
       double fmax(double, double);求最大值
       double min(double,double);求最小值
       int        rand(void); 求随机数

注意事项:
没有现成的cot三角函数,可以使用tan(PI/2-x)来实现
强调一点,1-3类 传参都是针对以弧度表示的数值,非角度表示的数值。
对于一般的对数求解,考虑利用数学上的对数转换来实现。
关于fmod:考虑到%只适用与整型数据,这里提出一个专门针对实型数据的取余运算的函数。
int rand(void) 用这函数的时候记得要给随机种子哦,要不得出的不是真正的随机数.产生随机种子可以用srand((unsigned int)time(NULL));这就是由时间产生的随机种子了。

二,函数

    assert.h C标准库的头文件中提供了一个宏称为断言可以用于验证程序的假设,如果这个假设是错误的,并打印诊断消息。

    以下是唯一的函数定义在头assert.h:  

    void assert(int expression)

    这实际上是一个宏,而不是一个函数,它可以被用来添加在C程序诊断。expression 相当于 if里面的表达式

示例:

[objc]  view plain   copy
 
  1. - (void)viewDidLoad {  
  2.    [super viewDidLoad];  
  3.    int i =1;  
  4.    assert(i>1);  
  5.    NSLog(@"打印出i的值是:%d",i);  

打印结果:

[objc]  view plain   copy
 
  1. Assertion failed: (i>1), function -[ViewController viewDidLoad], file /Users/admin/Desktop/xcodeCode/math.h/math.h/ViewController.m, line 20.  

注意:

       * assert是一个宏,只在debug版本中起作用,在release版本中,该语句是不起任何作用的。()   

       * 当assert诊断失败后,assert会向stderr打印消息。从图1可以看出,assert诊断信息的表达形式是:Assertion failed: 表达式(expression),程序(file) 出错的文件名(file name), 行号(line nnn)。然后,asset会调用abort中断函数的执行,源代码的文件名(The Source filename)和行号(line number)定义在预处理宏(preprocessor macros)__FILE__ 和 __LINE__中

      *在调试结束后,可以通过在包含#include 的语句之前插入 #define NDEBUG 来禁用assert调用,

示例代码如下:

[objc]  view plain   copy
 
  1. "font-size:12px;">      #include .h>  
  2.       #define NDEBUG  
  3.       #include   

      *NSAssert 在 Objective - c 里面也是宏,他的做用跟 assert()几乎一样 ,release 模式下就 什么也不执行 ,debug 就会 断言 。(release模式下 xcode定义了一个宏 NS_BLOCK_ASSERTIONS ,这个 宏 跟 c 里面的 NDEBUG 异曲同工)
      NSAssert(condition,desc) , 在 debug模式下 被翻译成

[objc]  view plain   copy
 
  1. "font-size:12px;">      if (!(condition)) {   
  2.          [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd   
  3.                                                                                      object:self file:[NSString stringWithUTF8String:__FILE__]   
  4.                                                                             lineNumber:__LINE__ description:(desc), ##__VA_ARGS__];   
  5.        }  

        参数:condition是条件表达式,值为YES或NO;

你可能感兴趣的:(C++)