在C语言和C++中,#define宏进行的字符替换中,要注意边际效应:

#define N 2+3

我们预想的N值是5,我们这样使用N,int a = N/2; //我们预想的a的值是2.5,可实际上a的值是3.5原因在于在预处理阶段,编译器将 a = N/2处理成了 a = 2+3/2;这就是宏定义的字符串替换的“边缘效应”因此要如下定义:#define N (2+3)

边际效应要用括号去完善

在C++中,不如直接用const,const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)

#define宏的边际效应相关推荐

  1. #define 宏的边际效应是什么

    在C语言和C++中,#define宏进行的字符替换,要注意边际效应: 举例一: #define N 2+3 我们预想的N值是5,我们这样使用N,int a = N/2; 我们预想的a的值是2.5,可实 ...

  2. C++define宏的边际效应

    const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查.而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应) 举例说明 #define ...

  3. 宏#define边缘效应(边际效应)

    #define N 6+3, N 的值是 9. double a; a = (float)N/(float)2; 在编译时我们预想 a=4.5,实际打印结果是7.5 原因是在预处理阶段,编译器将 a= ...

  4. const常量与define宏定义的区别

    #define RADIUS 100; const  float   RADIUS = 100; (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. ( ...

  5. C++ #define(宏定义)的使用

    C++ 宏定义 #define命令是C++语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. 宏定义的一般形式 #define <宏名& ...

  6. typedef与#define宏区别

    先让我们了解一下typedef的功能,typedef简单来说就是给类型取一个别名: 如 typedef int New   那么int就有一个别名叫New了,以后size就和int这个类型一共用法了. ...

  7. C语言中:#define宏的正确使用

    C语言中:#define宏的正确使用 正确使用方式1: #define A(a,b) ((a)*(b)) 正确使用方式2: #define F(x) do{\printf("This is ...

  8. 枚举enum与#define 宏的区别?

    枚举enum与#define 宏的区别? 1)#define 宏常量是在预编译阶段进行简单替换.枚举常量则是在编译的时候确定其值. 2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量. 3)枚举 ...

  9. define宏定义中的#,##,@#及\符号

    define宏定义中的#,##,@#及\符号 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. 1.# (string ...

最新文章

  1. 初学者可能不知道的vue技巧
  2. mysql 存储过程 条件_mysql sql存储过程条件定义与处理
  3. 信息学奥赛C++语言: 比身高
  4. Nagios 使用 NSClient++ 监控Windows Server
  5. spring数据源、连接池配置
  6. JavaScript变量复制
  7. 【模拟遍历】剑指offer:替换空格
  8. WORD图、表标号——题注
  9. BeEF-XSS实验手记
  10. 深度迁移度量网络 Deep Transfer Metric Learning
  11. Alpha 冲刺(8/10)
  12. WordPress 搭建超级好看的主题博客
  13. 鼓励师加成太刺激,鼻血喷了半斤,代码不一会儿就写完了...
  14. 人工智能数学基础-内积和外积
  15. win10 64位系统 打开光盘出现339错误 缺少mscomctl.ocx组件 解决方案
  16. EFR32--如何在EFR32程序中修改UUID
  17. 【读书向】阿里云天池大赛赛题解析——模型部分
  18. 自动换行 word-break:break-all和word-wrap:break-word
  19. OpenVAS Failed to find config ‘daba56c8-73ec-11df-a475-002264764cea‘
  20. 什么是IP封锁, 如何解封?

热门文章

  1. java计算机毕业设计西安财经大学校园一卡通管理系统源代码+数据库+系统+lw文档
  2. 太阳的光和灯光有什么区别_若日阳光照明|太阳能路灯与景观灯有什么不同?...
  3. 浩顺回头客餐饮系统服务器安装,浩顺回头客餐饮管理软件
  4. 数分笔记整理24 - 数据处理项目 - 社会财富分配问题模拟
  5. springboot基于javaweb校园防疫管理系统毕业设计源码021043
  6. 揭秘!阿里巴巴基于Transformer的推荐系统
  7. 【P8090 [USACO22JAN] Herdle B】题解
  8. 第四章 多维数组、字符串与广义表
  9. 三维数据入到arcgis平台的解决方案
  10. 目前GPU 超过100 TFLOPS的GPU 之一