美文网首页
#define和const定义的变量,有什么区别?

#define和const定义的变量,有什么区别?

作者: Taureau_2d81 | 来源:发表于2017-05-30 15:25 被阅读0次

1编译时与运行时

.define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。所以编译时不能进行数据类型检验。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。

const定义的常量,在编译时进行严格的类型检验,可以避免出错。在程序运行时在常量表中,系统为它分配内存。

2.define定义表达式时要注意“边缘效应”,例如如下定义:

#defineN2+3//我们预想的N值是5,我们这样使用N

inta=N/2;//我们预想的a的值是2,可实际上a的值是3

原因在于在预处理阶段,编译器将a=N/2处理成了a=2+3/2;这就是宏定义的字符串替换的“边缘效应”因此要如下定义:

#defineN(2+3)

const定义表达式没有上述问题。

相关文章

  • iOS技术基础

    一、define定义的宏和const定义的常量有什么区别? define定义宏的指令,程序在预处理阶段将用#def...

  • #define和const定义的变量,有什么区别?

    1编译时与运行时 .define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。所以编译时不能进行...

  • iOS面试(2)

    1、内存中的栈和堆的区别是什么?那些数据在栈上,哪些在堆上?#define和const定义的变量,有什么区别什么情...

  • 编程基础

    C语言 #define定义的宏和const定义的常量有什么区别? defined定义宏的指令,程序在预处理阶段将用...

  • 初探php

    常量与变量 变量:$; 常量:const;可以使用define定义常量;

  • iOS 日常小知识点总结

    define和const常量有什么区别 define在预处理阶段进行替换, const常量在编译阶段使用;宏不做类...

  • 问题[○]:#define和const变量有什么区别?

    #define在预处理阶段进行简单的替换,const在编译阶段使用 #define不做类型检查,仅仅展开替换,co...

  • C++中const和#define的利弊探索

    const和#define的利弊,从而推导const的意义; const和#define都有类似的功能,那就是定义...

  • #define和const

    c语言只有#define,c++可以用#define和const来定义常量。const比#define更具优势。 ...

  • const、static、extern

    const 限制类型:仅仅用来修饰右边的变量(基本数据变量,指针变量)被const修饰的变量只读。 和define...

网友评论

      本文标题:#define和const定义的变量,有什么区别?

      本文链接:https://www.haomeiwen.com/subject/ctsrfxtx.html