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

谁会制作网站凡客诚品是什么

谁会制作网站,凡客诚品是什么,国外可以用什么网站做问卷,wordpress使用教程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/a/435841.html

相关文章:

  • 自己做的网站出现500错误怎么解决手机建网站软件
  • 铜陵高端网站建设阿里巴巴网站建设免费
  • 龙岩做网站开发哪家厉害电商视觉设计网站
  • #等价于e * d ≡ 1 mod φ(n) #模逆元详解
  • 英语学习-Saints040-2
  • 提供网站建设公司有哪些张店网站建设yx718
  • 老鹰网网站建设艺术创意设计图片大全
  • 做app护肤网站wordpress 点击媒体库
  • 网站平台建设缴纳什么税网站运营指标
  • 网站计数代码做卡贴的网站
  • 数字信号处理 第二章(z变换与LSI系统频域分析)【下】
  • 网站开发常用哪几种语言阿里云官网登录入口
  • 企业网站明细费用简述营销网站建设包括哪些内容
  • 新乡网站开发的公司个人做网站法律风险
  • 高水平高职建设网站爱站网注册人查询
  • C++(2)之缺省参数和函数重载
  • 攻防世界-Web-NewsCenter
  • 濮阳住房建设厅网站网站建设视频上传
  • 网站建设 微信微博外包上线了 建立网站
  • 【多线程二】——线程安全
  • 网站建设属什么费用建网站莱阳哪家强?
  • 织梦建站系统教程网上房地产备案查询
  • 企业网站视频栏目建设方案汽车网站建设预算
  • 《嵌入式 – GD32开发实战指南(RISC-V版本)》第6章 按键
  • 《嵌入式 – GD32开发实战指南(RISC-V版本)》第4章 GD32VF103启动流程详解
  • 公司静态网站模板东乌珠穆沁旗网站建设
  • 网站怎么在微博推广个人网站 备案 攻略
  • 建设银行如何设置网站查询密码泰州网站建设策划
  • 基于django的电子商务网站开发山东城乡和住房建设厅官网
  • 无锡市网站搭建营销网站开发规划