有章法的学习c++(6)字面值常量
来源:互联网 发布:免费宠物店收银软件 编辑:程序博客网 时间:2024/05/20 02:22
在前面的初识输入输出中,曾经提到一个概念叫做字符串字面值常量。
形如"enter two numbers:"的值被称为字面会常量,这样的值一望而知。
每个字面值常量对应一种数据类型,字面值常量的形式和值决定了它的数据类型。
整形和浮点型字面值
我们可以将整形字面值写作十进制、十六进制、八进制数的形式。
以0开头的整数代表八进制数,以0x或者0X开头的数代表十六进制数。
看例子:
#include<iostream>using namespace std;int main(){int a = 20,b = 024,c = 0x14;cout << "a:" << a << endl;cout << "b:" << b << endl;cout << "c:" << c << endl;return 0;}
分别输入三种不同进制的整形数,最后所得出书都是一样的都是十进制的20。
运行结果如下:
默认十进制数是无符号的,八进制和十六进制是有符号的。
一个十进制字面值常量的类型,是int、long、long long中可容纳当前字面值常量的尺寸最小的那个。
而一个八进制和十六进制字面值常量的类型,是int、long、long long、unsigned int、unsigned long、unsigned long long中可容纳当前字面值常量的尺寸最小的那个。
字符和字符串字面值
单引号括起来的一个字符是字符型字面值,双引号括起来的是字符串字面值。
字符串字面值的类型实际是由常量字符构成的数组,编译器在每个字符串结尾处添加一个空字符'\0'(空字符和空格是完全不同的两样字符,空格类似于abc是可打印的,而空字
符意味着字符串的结束)。
看例子:
#include<iostream>using namespace std;int main(){cout << "hello" << ".length=" << strlen("hello") << endl;cout << "hello" << ".size=" << sizeof("hello") << endl;return 0;}
size求出的是字符串字面值所占的内存。
运行结果如下图:
在计算长度的时候,字符串字面值最后的空字符是不算入长度的,所以长度为5。
在计算所占内存大小的时候,空字符是占用了一个字符的内存,所以其大小是6。
有两类字符是程序员无法使用的,一类是不可视的字符,如:退格等。另一类是有特殊含义的字符,如:单引号,双引号等。
c++语言定义的转移语言包括:
换行符 \n
横向制表符 \t
报警符 \a
纵向制表 \v
退格符 \b
双引号 \"
单引号 \'
问号 \?
反斜杠 \\
回车符 \r
进纸符 \f
因为对退格符的概念不是很清楚,对换行符和回车符的概念也不是很清楚,所以写了一个简单的例子。
看例子:
#include<iostream>using namespace std;int main(){cout << "123456\b\b\b777" << endl;cout << "123456\b\b\b77" << endl;cout << "123456\b\b\b7" << endl;cout << "双引号\"换行符\n回车符\r进纸符\f" << endl;cout << "回车符\r" << endl;return 0;}
在实际的运算中,每一个退格符以为着光标向前移动一次。
如果换行符后面还有字符的话则后面的字符会把退格后光标后面的字符覆盖掉。
回车符的作用是把光标移动到本行的首位,如果回车符后面有字符,则会覆盖掉首位后面的字符。
换行符的意义就是单纯的换到下一行。
我们也可以使用泛化的转义字符
其形式是\+加八进制数或者\x+十六进制数提供一些示例:
\7(响铃) \12(换行符)\40(空格)
\0(空字符) \115(M)|x4d(字符M)
如果使用的是asc码字符集,则将反斜杠后面的值换算成相应的十进制,然后可以对照asc码表就可以知道其代表的值了。
做了一个简单的例子,看代码:
#include<iostream>using namespace std;int main(){cout << "Hi \x4dO\115!\n" << endl;return 0;}
结果如下图:
指定字面值的类型
通过添加如下表中的前缀或者后缀,可以改变整形、浮点型和字符型字面值常量的默认类型。
字符和字符串字面值
前缀 含义 类型
u Unicode16cahr16_t
U Unicode32cahr32_t
L 宽字符 wchar_t
u8 UTF_8(仅用于字符串字面值常量)cahr
整形
后缀 最小匹配类型类型
u或U unsigned
l或L long
ll或LL long long
浮点型 类型
f或F float
l或L long Double
看例子:
L'a' 宽字符类型字面值
u8"hi!" utf-8字符串字面值
42ull 整形字面值 unsigned long long类型
1E-3F 浮点型字面值,float类型
3.14159L 浮点型字面值,long double类型
- 有章法的学习c++(6)字面值常量
- 有章法的学习c++(7)变量
- 有章法的学习c++(0)使用命令行编译文件
- 有章法的学习c++(2)初识输入输出
- 有章法的学习c++(3)控制流
- 有章法的学习c++(5)类型转换(一)
- 有章法的学习c++(5)类型转换(二)
- 有章法的学习c++(8)复合类型
- 有章法的学习c++(9)复合类型(二)
- 有章法的学习c++(1)编写一个简单的c++程序
- 有章法的学习c++(4)基本内置类型(一)
- 有章法的学习c++(4)基本内置类型(二)
- 字面值常量的知识点
- c++pri 2/22--字面值常量
- C语言中的常量和字面值
- C++Primer读书笔记之字面值常量
- C/C++中的字面值常量
- C++学习基本语言-字面值常量
- Linux内核中的Kconfig、Makefile、.config
- 表空间创建
- 微信公众号开发无法用session保存状态
- git常用命令汇总
- ACM==迷茫
- 有章法的学习c++(6)字面值常量
- tomcat 的http和ajp协议
- Android文件存储之SDcard
- 小白日记5:kali渗透测试之被动信息收集(四)--theHarvester,metagoofil,meltag,个人专属密码字典--CUPP
- Java IO深入理解
- 排序算法之冒泡排序
- 线索二叉树
- 【iOS知识学习】_int、NSInteger、NSUInteger、NSNumber的区别和联系
- POJ 3107树的重心