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可以在任何地方定义常量,编译器对它的处理过程与变量相似,只是分配内存的地方不同

  • 相关阅读:
    codeforces 659F F. Polycarp and Hay(并查集+bfs)
    codeforces 659B B. Qualifying Contest(水题+sort)
    codeforces 659E E. New Reform(图论)
    codeforces 659D D. Bicycle Race(水题)
    sql_mode值的含义
    MySQL Query Cache
    Orchestrator安装
    脚本VIP更改为keepalive
    MHA软件下载地址
    MySQL中的事件调度器EVENT
  • 原文地址:https://www.cnblogs.com/weiboyuan/p/5082373.html
Copyright © 2011-2022 走看看