第二章 头文件、变量和基本类型(3)——字面值常量

0x01 什么是字面值常量?


一个形如42的值被称作字面值常量(literal),每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型。


0x02 常见字面值


整型字面值

我们可以将整型字面值写作十进制数、八进制数或者十六进制数的形式。

以下是三种表示数值20的方法:

20         //这是一个十进制的20
024        //用0开头代表八进制数
0x14       //用0x开头代表十六进制数

1、整型字面值具体的数据类型由它的值和符号决定:

2、默认情况下,十进制字面值是带符号数,八进制和十六进制字面值可能带符号也可能无符号;

3、十进制字面值的类型是int、long和long long中尺寸刚好能容纳下当前值的最小一个;

4、八进制和十六进制字面值的类型是int、unsigned int、long、unsigned long、long long和unsigned long long中尺寸刚好能容纳下当前值的最小一个;

5、类型short没有对应的字面值;

6、如果一个字面值连与之关联的最大数据类型都装不下,将产生错误;

7、尽管整型字面值可以存储在带符号的数据类型中,但严格来说,十进制字面值不是复数。例如我们使用了-20,负号其实仅仅起到对字面值取负值的作用,并不在字面值内。


浮点型字面值

浮点型字面值表现为一个小数或以科学计数法表示的指数,其中指数部分用E或e标识出来:

3.14159
3.14159e0
0.
.001
0e0
0E0              //以上均为浮点数的合法表达

浮点型字面值默认为一个double。


字符和字符串字面值

1、由单引号括起来的一个字符称为char字面值,双引号括起来的零个或多个字符则构成字符串类型字面值:

'a'                //字符字面值
"An apple!"        //字符串字面值

2、字符串字面值的类型实际上是由常量字符构成的数组,编译器会自动在每个字符串的结尾添加一个空字符( '\0' ),因此,字符串字面值的实际长度总是比它的内容多1;

3、如果两个字符串字面值位置紧邻且仅由空格、缩进或者换行符间隔,则它们实际上是一个整体:



布尔字面值和指针字面值(往后章节详细介绍)

true和false是布尔类型的字面值;

nullptr是指针字面值,代表一个空指针。


0x03 指定字面值类型


通过添加表中的前缀和后缀,可以改变整型、浮点型和字符型字面值的默认类型:


指定字面值类型的前后缀列表


1、对于一个整型字面值,我们能分别指定它是否带符号和占用多少空间;

2、后缀中有U,则代表该字面值是无符号类型,数据类型可以是unsigned int、unsigned long和unsigned long long中尺寸刚好能容纳下的最小一个;

3、后缀中有L,数据类型至少是long;

4、后缀中有LL,数据类型将是long、long long、unsigned long long中的一种;

5、U可以与L或LL结合使用:

L'a'       //宽字符型字面值,数据类型是wchar_t
u8"hi!"    //UTF-8字符串字面值
20ULL      //无符号整型字面值,数据类型是unsigned long long
1E-3F      //单精度浮点型字面值,数据类型是float
3.14159L   //扩展精度浮点型字面值,数据类型是long double

6、当使用一个长整型的字面值时,应习惯性使用大写字母L来标记,因为小写字母l和数字1很容易混淆,不方便程序的检查和阅读。




-----------(我是分割线)-----------

        这里的学习顺序基于《 C++ Primer(第五版)》,虽说这本书是C++神书,但如果没有一定的C语言基础,肯定很难一下子啃下来,特别是原书第一章说编写一个简单的程序,结果各种语句和输入输出流都出现了,最后还来个类简介,实在是有点让新手朦逼。就算有一定的C++基础,中文版的语言也略显拗口。

        所以,我建议可以先用谭浩强的C/C++系列高校用书籍来打个基础。先别管网上对谭教授的教材评价如何,至少它能高效地带你入门。直接学习C++不是不可以,但毕竟C语言是一门经典的计算机语言,经久不衰,还衍生出了很多其他的计算机语言。学好C语言能培养出一种理解计算机语言的思维模式,以后学其他语言都可能事半功倍。

        我个人的学习方式是“先看懂,后深入,再高效”。在这里会按照我的理解,尽量用简单的语言来解释C++的知识点,至少先看懂并让程序能用再说。如果有错欢迎指正。

        文中可能有某些程序段来自pezy大神,自学C++的路上我有很多疑难都是在pezy大神的解释中顿悟。在此表示感谢!

        任何地方如有侵权请立即联系删除。

-----------(我是分割线)-----------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值