c语言数据常量编程中能否对常量 设置 (常)引用?

以上都为字符常量(其中aaa是一个八进制的数,是ascii值;bb是一个十六进制的数是ascii值)

字符常量的类型为:char

常量0x7FFFFFFF 和 0x 只是在数值上有差异 ,然而两个常量的數据类型却不一样常量的类型根据数值的大小有变化。
当我们需要明确我们使用的常量的类型时通常我们会在常量后面加上后缀,如:“u”“l”“ul”

浮点型常量默认为double类型
如果需要明确指定,浮点常量为float类型我们通常需要在浮点数后面加上后缀“f”

注意:字符串常量“abc”在内存中占4个字节。

发布了36 篇原创文章 · 获赞 29 · 访问量 4万+

}

c语言数据常量中字符串常量要占內存那普通的常量呢?例如整型常量

 如inti;i=6;这里我知道系统要为变量i分配4个字节那6这个整形常量还需要单独分配内存吗?还是说6不用洅单独分配内存而只是作为一个整数存在i这个变量所占的内存中?因为谭浩强的书上有这样一句原话“在程序中出现的常量是要存放在计算机的存储单元中的。这就必须确定分配给它多少字节按什么方式存储。例如程序中有整数12,在VisualC++6.0中会分配给它4个字节按补码方式存儲。”这书上的话不太懂看着话的意思是就单单一个整数12,也要占4个字节我如果写inti=12,那是不是总共要占8个字节(i占4个12占4个?)

这个6會作为立即数写死在生成的代码中不再占据额外的内存我觉得这种说法太过笼统,要说占内存也可以说占比如生成的代码中会有mov[i]12这样嘚代码,程序运行过程中代码被映射到内存中也就是占内存,至于i如果是全局变量,那么会在程序加载到内存中时就为i分配四个字節的内存,如果局部变量程序运行过程中会根据编译生成的代码操作esp算是未局部变量申请内存,函数结束就释放了

整型常量也是要占用內存的但占用的内存位置有所不同。一般来说基本类型(整型、字符型等)常量会在编译阶段被编译成立即数,占的是代码段的内存而字符串常量或基本类型的常量数组占用的是数据段内存。当然占代码段的内存一般不在我们常说的“占内存”范围中。由此引出一個“常识”性的代码优化实践:在编译器不开优化的情况下多次出现的相同常量会占用多份内存,比如下面的代码:constchar*a="hello,world!";constchar*b="hello,world!";在数据段中其实有兩份"hello,world!"即使使用宏定义也是一样:#defineHELLO"hello,world!"constchar*a=HELLO;constchar*b=HELLO;更好的写法是:conststaticchar*HELLO="hello,world!";constchar*a=HELLO;constchar*b=HELLO;这样,数据段中就只有一份"hello,world!"了也就是:能用const的,不用#define

打开App,查看更多内容

}
  • 变量常量,常变量标识符

1.常量分为:整型常量,实行常量字符常量,字符串常量符号常量;字符常量又分为:普通字符,转义字符

2.变量:变量代表一个有名字,具有特定属性的一个存储单元具有必须先定义,后使用的特性变量就是一个有名字的存储地址,从变量中取值实际就是通过变量洺找到相应的内存地址,从该存储单元中读取数据

3.常变量:具有变量的基本属性,有类型占存储单元,只是变量存在期间不允许改变其值常变量是有名字的不变量,常量是没有名字的不变量

4.标识符:在计算机高级语言中用来对变量,符号常量名函数,类型等命名嘚有效字符序列统称为标识符

编程语言的核心:数据类型

}

我要回帖

更多关于 c语言数据常量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信