zoukankan      html  css  js  c++  java
  • define宏定义和const常变量区别

    1.define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。
    const定义的常量,在程序运行时在常量表中,系统为它分配内存。
    2.define定义的常量,预处理时只是直接进行了替换。所以编译时不能进行数据类型检验。
    const定义的常量,在编译时进行严格的类型检验,可以避免出错。
    3.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)
    const定义表达式没有上述问题。
    const定义的常量叫做常变量原因有二:
    const定义常量像变量一样检查类型
    const可以在任何地方定义常量,编译器对它的处理过程与变量相似,只是分配内存的地方不同

  • 相关阅读:
    2015.07-2015.08
    the last lecture
    强化的单例属性_Effective Java
    Socket通信客户端设计(Java)
    静态工场方法代替构造器
    如何控制Java中的线程,总结了3种方法...
    如何快速转型,比如C#...to...Java
    C#中var和dynamic
    How to use the Visual Studio
    mark blog
  • 原文地址:https://www.cnblogs.com/weiboyuan/p/5082373.html
Copyright © 2011-2022 走看看