C++学习之数据类型—常量
来源:互联网 发布:国内小众服装品牌知乎 编辑:程序博客网 时间:2024/06/01 18:45
C++常量分为以下字面常量、符号常量、契约性常量、布尔常量和枚举常量,让我们一起来看看这些常量的用法以及特点。
字面常量:
1、整形字面常量
例如 10,057,0xf7,表示方法可以有八进制,十进制,十六进制。默认的类型为int或者long行,根据字面值的大小来判断。可以通过加入后缀L或者l来强制转换为long类型,又可以加后缀U或者u来强制转换为unsigned类型,例如1024UL为unsigned long类型。
2、浮点字面值常量
可以用十进制,例如3.14或者科学计数法3.12E2来表示,默认的浮点字面值为double类型,在数值后面加上F或者f表示单精度,加上L或者l表示long double类型。
3、字符常量
可打印字符,直接加单引号表示,例如 ‘a’,‘2’;不可打印字符,例如退格键,用转义字符表示,例如换行符‘\n',回车符'\r'等等。
4、字符串常量
例如“hello”,“”,两个相邻的仅由空格、制表符和换行符分开的字符串字面值,可以连接成一个新的字符串字面值。例如
std::out<<"welcome "
"to "
"C++ world!"<<endl;
将会输出:welcome to C++ world!
还有一种方法可以连接多行字面值,在一行程序的末尾加一个反斜杠号可以将此行和下一行当做同一行处理。例如
co\
ut<<"abc\
def"<<endl;
此处,输出abc def。值得注意的是,反斜杠号必须是该行的尾字符,同样,后继行行首的任何空格和和制表符都是该字符串字面值的一部分。
另外,值得一提的是,除了字符串常量之外,无法获取一个字面常量的地址,例如,我们可以char* pa="abc",但是int *p=&3 这样写是错误的。
符号常量:
存在两种符号常量,由#define定义的宏常量和const定义的常量。由#define定义的宏常量是预编译伪指令,在进入编译阶段之前就已经替换成了字面常量,所以,宏常量本质上是字面常量;而由const定义的常量则更为灵活,需分情况对待。
1、const全局常量
此时编译器将该常量放置于符号表中,不需要分配存储空间。任何对该常量的修改都将失败,见下例
此处,编译链接没有出错,但运行的时候不能通过。
2、const局部常量
此处输出,100和1。对此,《C++ primer》上的解释是对于基本类型的const常量,编译器会重新在内存中创建一个它的拷贝,通过其地址访问的是它的拷贝而非原始的符号常量。
- C++学习之数据类型—常量
- 【黑马程序员】iOS学习之路——C语言之数据类型、常量、变量
- C语言学习七数据类型的学习之常量和进制
- C语言学习之常量
- 【学习ios之路:C语言】数据类型、常量变量、运算符、表达式、格式化输入输出
- C语言基础学习基本数据类型-变量和常量
- 黑马程序员——C语言笔记之数据类型与常量
- c指针学习——之字符串常量
- java学习之路(4)-常量 、变量与数据类型
- c语言学习之数据类型
- C语言学习之三:常量
- C语言中的数据类型&常量
- C语言:数据类型数据常量
- C语言数据类型(三)——变量与常量
- C++数据类型之文字常量
- C/C++学习之路之数据类型
- 黑马程序员——IOS基础---C语言学习之复杂数据类型之其他数据类型
- [TwistedFate]C语言学习:C数据类型,常量变量,运算符,表达式,输入输出
- seandroid linux 4.2 的 setool 检查权限通不过的解决。
- Linux内核Makefile文件
- 安装VMware tools共享找不到gcc库文件
- WP7读取资源文件常见问题
- Starting NFS daemon: [FAILED] 无法启动NFS
- C++学习之数据类型—常量
- Hanoi双塔问题 bjfu1120 递推
- Swift云存储技术详解:综述与概念
- javaWeb之schema
- acm
- ContentProvider 彩信数据访问
- 2012中国互联网十大雷人雷事
- CF 第18场 简单题目一览表
- SNMPv2协议The InformRequest-PDU