c++字面值常量

xiaoxiao2021-02-28  95

内容整理摘自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; }

整个结果

转载请注明原文地址: https://www.6miu.com/read-45752.html

最新回复(0)