您的位置:首页 > 编程语言 > C语言/C++

c++字面值常量

2017-07-10 22:48 176 查看
内容整理摘自C++ Primer (中文第四版)

整型字面值

字面值整数常量的类型默认为int或long类型,精度类型决定于字面值–其值适合int就是int类型,适合long就是long类型。

通过增加后缀能够强制将字面值整数常量转换为long,unsigned 或 unsigned long 类型通过在数值后面加”L”或”l”。

通过在数值后面加U或u定义unsigned类型。同时加L和U就能够得到unsigned long类型字面值。但其后缀不能有空格。

such as : 128u 1L 1024UL 8Lu

浮点字面值规则:通常可以用十进制或者科学计数法来表示浮点字面值常量。

such as: 3.14159F 3.14159E0f E0f表示以十为底数0为指数的幂 f代表单精度

.001f 1E-3F .001f代表0.001f 1E-3F 表示 (1*10^3)F

12.345L 等价于 12.345E0L

0. 等价于 0e0 (即:0*10^0) (这部分没有验证,输出结果即为0,看不出是什么类型,有资料说0.即表示double 此为他的地址链接,在此还留待验证)

布尔字面值与字符型字面值

bool true = false;

‘a’ ‘2’ ‘,’

字符字面值前加L就能够得到wchar_t类型的宽字符字面值。

非打印字符的转义序列

不可打印字符 与特殊字符都用转义字符书写

转义字符都以反斜线符号开始 ‘\’ (区别 ‘/’是斜杠)

c++语言中定义了如下转义字符:

换行符\n 水平制表符\t 纵向制表符\v 退格符\b 回车符\r 退纸符\f

报警(响铃)符\a 反斜杠\ 疑问号\? 单引号\’ 双引号\”

我们可以使用任何字符表示为以下形式的通用转义字符:

\ooo 这里 ooo表示三个八进制数字,这三个数字表示字符的数字值。

下面的例子是用ASCII码字符集表示字面值常量

\7 响铃符 \12 换行符 \40 空格符

\0 空字符 \062(‘2’) \115 (‘M’)

同样也可以用十六进制转义字符来定义字符 //—————————-(此部分未有详细理解)——-

\xddd

字符串字面值

字符串字面值(相对于前面几种字面值)更加复杂 字符串字面值 是一串常量字符。

不可打印字符表示成相应的转义字符

为了兼容 c语言 c++中所有的字符串字面值都由编译器自动在末尾添加一个空字串。字符字面值’A’ 而”A”表示包含字母A和空字符两个字符的字符串。//———-验证过程中并没有如书中所讲:在字符串字面值末尾存在空格(留待验证)

也在存在宽字符串字面值,正如存在宽字符字面值:L’a’ 也存在宽字符串字面值,一样在前面加”L”,如L”a wide string literal”。

字符串字面值的连接

两个仅相邻的仅由空格、制表符或换行符分开的字符串字面值(或宽字符串字面值),可连接成一个新字符串字面值。这使得多行书写长字符串字面值变得简单。

此部分结果 显示 “a multi-line” 与 “using concatenation”之间存在空格符”string literal”与”using concatenation”之间 也存在空格符

如果连接字符串字面值和宽体字符串字面值,将会出现什么结果呢?

其结果是未定义的,也就是说连接不同类型的行为标准没有定义。这个程序可能会执行,也可能崩溃或者产生没有用的值。

多行字面值

字符串有一个基本的但不常用的方法,这个方法依赖于很少使用的程序格式化特性:在一行的末尾加一反斜线符号可将此行和下一行当做同一行处理。

c++的格式非常自由。特别是一些地方不能插入空格,其中之一是在单词中间。特别是在单词中间断开一行。但可以通过反斜线符号巧妙地实现:

此部分验证时解决了遇到的换行也未能实现的问题。

int main(int argc, char** argv) {

"Hello World!"; //simple string literal
"";//empty string literal
cout << "\nCC\toptions\tfile.[cC]" << endl; //string literal using newlines and tabs

cout << "a multi-line"
"string literal"
"using concatenation"
<< endl;
system("pause");
return 0;
}




int main(int argc, char** argv) {

"Hello World!"; //simple string literal
"";//empty string literal
cout << "\nCC\toptions\tfile.[cC]" << endl; //string literal using newlines and tabs

cout << "a multi-line"
"string literal"
"using concatenation"
<< endl;

//cout << L"This is a wide string literal." << endl;
//宽体字符的应用返回补充方式尚不明确,如后续有涉及再回来补充。

cou\
t << "hi" << endl;//后继行开头是不可以有空格的
//等价于   cout<< "Hi"<<endl;
system("pause");
return 0;
}


整个结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++