常量

文字是最明显的一种常量。它们被用来对程序的源代码内表达特定的值。我们已经使用了一些在前面的章节中给出具体的数值变量或表达的消息,我们希望我们的方案打印出来,比如,我们当时写到:

 
a = 5;
 


5这一段代码是一个 常量

文字常数可分为:整数,浮点,字符,字符串,布尔,指针,和用户定义的文字。

整数数词

1
2
3
1776
707
-273
 


这些是标识整数值的数值常数。请注意,他们没有用引号括起来,或任何其他特殊字符; 他们是代表十进制整数位的继承简单; 例如, 1776始终代表着价值 1776

除了十进制数(那些我们大多数人每天使用),C ++允许使用八进制数字(以8为基数)和十六进制数字作为文字常数(基数为16)的。对于八进制文字,数字前面有一个 0(零)字符。和十六进制,它们用字符前面 0x(零,x)的。例如,下面的文字常量都是彼此等效:

1
2
3
75         // decimal
0113       // octal
0x4b       // hexadecimal  
 


所有这些都代表了同一个号码:75(75)分别表示为基10的数字,八进制数字和十六进制数字。

这些文字常量有型,就像变量。默认情况下,整型常量的类型的 int。然而,某些后缀可以附加到文字指定不同的整数类型整数:

后缀类型修饰符
u 要么 Uunsigned
l 要么 Llong
ll 要么 LLlong long

无符号可与任何其它两个中的任何命令,以形成被组合 unsigned longunsigned long long

例如:

1
2
3
4
5
75         // int
75u        // unsigned int
75l        // long
75ul       // unsigned long 
75lu       // unsigned long 
 


在所有上述情况下,后缀可以用大写或小写字母来指定。

浮点数词
他们表示实际值与小数和/或指数。它们可以包括要么一个小数点,一个 e字符(即表示 “在第X个高度由十”,其中 点¯x是下面的一个整数值 e,或两者小数点和字符) e字符:

1
2
3
4
3.14159    // 3.14159
6.02e23    // 6.02 x 10^23
1.6e-19    // 1.6 x 10^-19
3.0        // 3.0  
 


这是四个有效带有小数的数字用C ++表示。第一个数字是PI,第二个是阿伏伽德罗数,第三个是电荷的电子(一个非常小的数) -所有他们的approximated-,最后一个是数字 3表示为浮点点数值文字。

浮点文字的默认类型是 double。型的浮点文本 floatlong double可通过将以下后缀之一指定:

后缀类型
f 要么 Ffloat
l 要么 Llong double

例如:

1
2
3.14159L   // long double
6.02e23f   // float  
 


任何可以是一个浮点数值常数(部分的字母 efl)可以使用具有在意义上没有差异低于或大写字母写入。

字符和字符串
字符和字符串用引号括起来:

1
2
3
4
'z'
'p'
"Hello world"
"How do you do?"
 


前两个表达式表示 单字符文字,然后接下来的两个代表 字符串的几个字符组成。请注意,以表示一个字符,我们将其括单引号(间 '),并表达一个字符串(通常由多个字符),我们用双引号之间的字符( ")。

无论是单字符和字符串要求周围他们从可能的变量标识或保留字区分开来引号。请注意这两个词语之间的区别: 在这里,仅此一项就指一个标识符,如变量的名称,或者一个复合型的,而(单引号括起来)将参考字符文字(代表小写字符 点¯x字母)。 字符和字符串也可以代表特殊字符,是很难或不可能以其他方式表达一个程序的源代码,例如换行()或制表符()。这些特殊字符是所有的人都用一个反斜杠字符开头()。 在这里,你有一个字符转义码的列表:

x
'x'

x 'x' 'x'

\n \t \



转义码描述
\n新队
\r回车
\t标签
\v垂直制表
\b退格
\f换(页供稿)
\a警报(蜂鸣声)
\'单引号('
\"双引号("
\?问号(?
\\反斜杠(\

例如: 在内部,计算机代表字符数字代码:最典型的是,他们使用的一个扩展 ASCII字符编码系统(参见 ASCII码获取更多信息)。字符也可以使用其数字代码写入反斜线字符(文字表示),接着由代码表示为八进制(基-8)或十六进制(基数16)号码。对于一个八进制值,反斜杠由数字直接跟着; 而对于十六进制的字符插入反斜杠和十六进制数字本身之间(例如:或)。 几个字符串可以连接起来形成一个字符串简单地通过一个或多个空格,包括制表符,换行符和其他有效空白字符分隔它们的文字。例如:

'\n'
'\t'
"Left \t Right"
"one\ntwo\nthree"

\ x \x20 \x4A



1
2
"this forms" "a single"     " string "
"of characters"
 


以上是一个字符串等同于:

 
"this formsa single string of characters"
 


注意引号内的空间是如何字面的一部分,而他们之外都没有。

在C ++中,反斜杠(:一些程序员也使用了一招,包括在多线长的字符串 \在一行的末尾被认为是) 续行,合并双方的线下入一行字符。因此下面的代码:

1
2
x = "string expressed in \
two lines"
 


相当于:

 
x = "string expressed in two lines"
 


所有字符文字和上述字符串由类型的字符 char。不同的字符类型可以通过使用以下前缀之一来指定:

字首字符类型
uchar16_t
Uchar32_t
Lwchar_t

需要注意的是,不同类型的后缀整型常量,这些前缀是 区分大小写的:小写 char16_t和大写的 char32_twchar_t

为字符串常量,除了上述 uUL两个附加前缀存在:

字首描述
u8该字符串使用UTF-8的编码执行
R该字符串是一个原始字符串

在原始字符串,反斜杠和单引号和双引号都是有效的字符; 字面的内容是由一个初始分隔和最后,这里是任意字符序列(包括空序列)。字符串的内容是什么位于括号内,忽略了划分序列本身。例如: R"sequence( )sequence" sequence

1
2
R"(string with \backslash)"
R"&%$(string with \backslash)&%$"
 


上述两个字符串等同 "string with \\backslash"。该 R前缀可以与任何其他前缀,如结合 uLu8

其他文字
三关键字文字在C ++中存在: truefalsenullptr
  • truefalse对于类型变量的两个可能的值bool
  • nullptr空指针值。

1
2
3
bool foo = true;
bool bar = false;
int* p = nullptr;
 


类型化常量表达式

有时,它仅仅是方便的提供一个名称的恒定值:

1
2
const double pi = 3.1415926;
const char tab = '\t';
 


然后我们可以使用这些名称,而不是定义它们的文字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;

const double pi = 3.14159;
const char newline = '\n';

int main ()
{
  double r=5.0;               // radius
  double circle;

  circle = 2 * pi * r;
  cout << circle;
  cout << newline;
}
31.4159


预处理器定义(#定义)

命名常量另一种机制是使用预处理器定义。它们有以下形式:

#define identifier replacement 

此指令后,任何出现 identifier在代码中被解释为 replacement,在更换任何字符序列(直到行末尾)。这种替换是由预处理器执行,并且程序进行编译之前,这样就造成了一种盲置换发生的:类型或语法涉及的有效性不以任何方式进行检查。

例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;

#define PI 3.14159
#define NEWLINE '\n'

int main ()
{
  double r=5.0;               // radius
  double circle;

  circle = 2 * PI * r;
  cout << circle;
  cout << NEWLINE;

}
31.4159


注意,该 #define线是预处理器指令,并作为如单行指令-unlike C ++报表─不需要分号;在结束(); 该指令自动扩展到该行的末尾。如果分号被包括在该行,它是置换序列的一部分,并且也包含在所有替换匹配项。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值