当前位置:  技术问答>linux和unix

C 真正的变量

    来源: 互联网  发布时间:2016-09-03

    本文导语:  我看C专家编程中说 const int i = 2; i并不是真正的常量 因为不能在switch的case中被使用 我用#define i 2 就可以了  想请教的是 为什么const int i = 2定义的就不是常量了? 这里的2不是不能被改变吗? 而define就可以...

我看C专家编程中说
const int i = 2;
i并不是真正的常量
因为不能在switch的case中被使用

我用#define i 2 就可以了 

想请教的是 为什么const int i = 2定义的就不是常量了?
这里的2不是不能被改变吗?
而define就可以了 

请高手指点之下 谢谢

|
const int i = 2;
这里的i本质上还是个变量,只不过是不允许修改的变量。
如果你再写一行 i=3,编译器会报错,原因是i不允许修改。

#define i 2
这里的i,经过预处理之后,在编译之前就被替换成2了,是个常数。
如果你再写一行 i=3,经过预处理之后就相当于2=3,编译器当然也会报错,但是原因和const那个就完全不一样了,根本就是语法错误。
如果你再写一行 case i: 经过预处理之后就相当于case 2:  所以编译器对他没有任何意见。


|
#include 
using namespace std;
int main()
{
        const int i = 10;
        int* p = const_cast(&i);
        cout 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c/c++预处理命令之预定义变量
  • 将父类变量强制赋予子类变量时,发生了什么?比如子类的成员变量,假如父类中有不存在子类中有的成员变量的情况,那么子类中该变量是否默认取值???
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • 请问在win2000的环境变量中,administrator的用户变量与系统变量有什么区别??
  • Linux下如何查看,设置环境变量并立即生效
  • 大家快来帮帮我,关于JAVA的类变量:一定在定义成STATIC变量(即静态变量)吗?
  • c++的boost库多线程(Thread)编程(线程操作,互斥体mutex,条件变量)详解
  • 实例变量和类变量
  • 枚举类型变量如何定义与初始化,如何给该变量加入新值?
  • jsp中的变量和javascript中的变量可以比较吗
  • shell编程,如何将变量中的环境变量转换为绝对值
  • 程序中获取的环境变量能够根据Linux系统中相应环境变量而变化吗?
  • C#:(变量)字段和局部变量的作用域冲突
  • 如何清空session变量的值,或者删除一个session变量
  • 全局结构体变量和全局结构体指针变量
  • 动态库中的变量(全局和自动变量)在什么地方存储,内存在什么位置分配?
  • 菜鸟问题:如何设置application变量和session变量?
  • 怎么查看自己的shell的环境变量,和root的环境变量,solaris系统
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • linux 下设置环境变量 使用了setenv 和putenv 在程序结束以后 发现变量又变回去了
  • 请问:环境变量的值 一般前面加$就可以了,但有时又用{}将环境变量括起来,它们有什么区别啊?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3