当前位置: 首页 > wzjs >正文

ppt做的模板下载网站有哪些内容广州seo排名外包

ppt做的模板下载网站有哪些内容,广州seo排名外包,哪里有做微商网站,极客邦0 资料 最值宏do{}while(0)的宏封装技巧 1 最值宏 - C最值的宏,在两个头文件中,分别为cfloat和climits。其中,float的最值宏在cfloat中,且cfloat没有负值的最小宏,而其他char、int和double是在climits中。如下// --…

0 资料

  • 最值宏
  • do{}while(0)的宏封装技巧

1 最值宏

- C++最值的宏,在两个头文件中,分别为cfloat和climits。其中,float的最值宏在cfloat中,且cfloat没有负值的最小宏,而其他char、int和double是在climits中。如下
// --------------------------------
#include <limits.h>CHAR_MIN        char的最小值
SCHAR_MAX        signed char 最大值
SCHAR_MIN        signed char 最小值
UCHAR_MAX        unsigned char 最大值SHRT_MAX        short 最大值
SHRT_MIN        short 最小值
USHRT_MAX        unsigned short 最大值INT_MAX        int 最大值
INT_MIN         int 最小值
UINT_MAX        unsigned int 最大值
UINT_MIN        unsigned int 最小值LONG_MAX        long最大值
LONG_MIN        long最小值
ULONG_MAX        unsigned long 最大值double d1 = DBL_MIN;
double d2 = DBL_MAX;
long ln1 =  LONG_MAX;
long ln2 =  LONG_MIN;
long long lln1 = LONG_LONG_MAX;
long long lln1 = LONG_LONG_MIN;// --------------------------------
#include <float.h> 
FLT_MANT_DIG      float 类型的尾数
FLT_DIG         float 类型的最少有效数字位数
FLT_MIN_10_EXP     带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP      float类型的正指数的最大值(以10为底)
FLT_MIN         保留全部精度的float类型正数最小值
FLT_MAX         float类型正数最大值

2 定位宏

  • FILE:文件名
  • FUNCTION:函数名
  • LINE:行数

3 比较宏

  • 在C/C++中,浮点数的表示是不准确的。float、double分别遵循R32-24,R64-53的标准。他们尾数的位数分别是23、52,即误差在2-23,2-52.所以float的精度误差在1e-6,double的精度误差在1e-15。因此,对于浮点数的比较不能单纯使用==与!=来比较。通常使用以下的比较方法:
    • 所以判断浮点数是否等于0:
      • 要判断一个单精度浮点数是否等于0:if(fabs(f_float) <= 1e-6);
      • 要判断一个双精度浮点数是否等于0:if(fabs(d_double) <= 1e-15);
    • 所以判断两个浮点数相等:
      • 要判断两个单精度浮点数是否相等:if(fabs(f1_float - f2_float) <= 1e-6);
      • 要判断两个双精度浮点数是否相等:if(fabs(d1_double - d2_double) <= 1e-15);
    • 注意:
      • 浮点数的绝对值用fabs(整型绝对值是abs)
      • fabs与abs是在cmath头文件中

4 连接宏

4.1 #运算符

#运算符用于创建字符串,简单说就是在它引用的宏变量的左右各加上一个双引号。#运算符后面应该跟一个形参(中间可以有空格或Tab),

如定义好#define STRING(x) #x之后,下面二条语句就等价。

char *pChar = "hello world";
char *pChar = STRING(hello world);

4.2 #@运算符

在函数式宏定义中,#@运算符用于创建一个字符,如

#define makechar(x)  #@xa = makechar(b);

预处理之后是 a = ‘b’;

4.3 ##运算符

##运算符把前后两个预处理Token连接成一个预处理Token,和#运算符不同:##运算符不仅限于函数式宏定义,变量式宏定义也可以用。例如:

#define CONCAT(a, b) a##b
CONCAT(con, cat)

预处理之后是concat。再比如,要定义一个宏展开成两个#号,可以这样定义:

#define HASH_HASH # ## #

注意

凡是宏定义里有用**#或##的地方宏参数是不会再展开**,例如**_STRI(INT_MAX)中的INT_MAX就不会被展开为2147483647**。

如果想要使其中的宏参数展开,则需要多加一层中间转换宏: #define STRI(s) _STRI(s)。加这层宏的用意是把所有宏的参数在这层里全部展开,那么在转换宏里的宏就能得到对应的宏参数。

#include<stdio.h>
#include<iostream>
using namespace std;#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)#define A(x) T_##x
#define B(x) #@x
#define C(x) #x#define WARN_IF(EXP) if(EXP) cerr << #EXP << endl;
#define paster( n ) cout << "token" << #n << " = " << n << endl;
#define _CONS(a, b) int(a##+##b)
#define _STRI(s) #s
#define STRI(s) _STRI(s)void test_sharp_symbol()
{printf("%s\n", h(f(1, 2))); //输出:12printf("%s\n", g(f(1, 2))); //输出:f(1,2)printf("%s\n", h(A(1)));    // A(1)------〉T_1printf("%d\n", B(1));       // B(1)------〉'1'printf("%s\n", C(1));       // C(1)------〉"1"int div = 0;WARN_IF(div == 0);              //输出: div == 0paster(9);                      //输出: token9 = 9cout << _CONS(1+2, 2) << endl;  //输出: 3cout << _STRI(INT_MAX) << endl; //输出: INT_MAXcout << STRI(INT_MAX) << endl; // prints : 2147483647
}
  • Token 是程序中对编译器有意义的最小元素。Token 可分类如下:
    • Keywords
    • Identifiers
    • Constants
    • Strings
    • Special Symbols
    • Operators


自定义宏

易错点

  • 宏函数,要使用do{}while(0)的技巧,将函数体存为复合语句,相当于单条语句。避免宏替换对一些语句造成执行逻辑的错误,例如if、while等,参考博客,例如
#ifndef xxx
#defind xxx(v) do{...;...;}while(0)
#endif

注意,while后面不要加分号( ; )。

  • 宏函数中,要注意多次替换输入参数的问题。如果输入参数是个函数,而该参数在宏函数体中出现多次,则函数体会被实现多次,这是很严重的错误。
http://www.dtcms.com/wzjs/158216.html

相关文章:

  • 昆明优化网站公司长沙seo咨询
  • 施工企业绩效考核管理办法厦门seo结算
  • 长宁网站制作网络营销公司名字
  • 绿色农业网站模板互联网推广运营是做什么的
  • 企业邮箱哪里买seo常用分析的专业工具
  • 中国十大咨询公司seo关键词优化推广外包
  • 分销系统什么意思湖南正规seo优化
  • 网站创建软件惠州百度seo找谁
  • 做网站的参考书企业网站建设制作
  • 免费视频素材网站都有哪些soe搜索优化
  • 个人网站建设方案实施新闻营销发稿平台
  • 编程做网站容易还是做软件网络服务器的作用
  • 青山做网站西安做网站公司
  • 自己的网站建设温州seo团队
  • 河南做网站 河南网站建设站长工具ip地址查询域名
  • 网站假备案举报苏州吴中区seo关键词优化排名
  • 网站优化营销seo优化软件大全
  • 做网站容易挣钱吗扬州网站推广公司
  • 中国网站排名 优帮云seo管家
  • 营销型网站的优势免费十大软件大全下载安装
  • 婚庆公司网站模板培训机构怎么找
  • 济南科技网站建设李守洪排名大师怎么样
  • 制作网站能挣钱湖南手机版建站系统开发
  • 年报是否就是在工商网站做的网站收录入口
  • 用ftp做网站廊坊首页霸屏优化
  • 中国十大产品设计公司seo是什么意思网络用语
  • web前端培训学多久优化大师官方
  • 网站开发新技术探索品牌营销推广策划公司
  • 免费做国际贸易的网站erp123登录入口
  • 如何帮人做网站赚钱企业推广网站有哪些