每种类型都有相应的文字吗?

sam*_*per 0 c++ oop

据Bjarne的Stroustrup的编程原理与实践使用C++(第六印刷,2012年11月),"每个[中]类型[ int,double,char,string,和bool]文字都有自己的风格特点"(第63页).

在同一本书的§A.2中,int提到了(无符号;长)和浮点文字的其他变体,以及(null)指针文字.

是否每个类型都有相应的文字?

4pi*_*ie0 5

C++标准n3337 § 2.14.1/1:

有几种文字.

文字:

整数字面

字符文字

浮点字面

字符串字面量

布尔文字

指针字面

用户定义的字面

不,不是avery类型有文字.类没有文字,以及即void,int*,signed char,unsigned char,short,unsigned short.


文字解释说:

整数字面

整数文字是一系列没有句点或指数部分的数字.

例: 1

字符文字

字符文字是用单引号括起来的一个或多个字符,如'x',可选地前面有字母u,U或L之一,如u'y',U'z'或L'x' , 分别.

'c-char-sequence'

你好了 - 序列'

U'c-char-sequence'

L'c-char-sequence'

例如: 'a','ab','\'',L'0','('

浮点字面

浮动文字由整数部分,小数点,小数部分,e或E,可选的有符号整数指数和可选的类型后缀组成.整数和分数部分都由一系列十进制(十进制)数字组成.可以省略整数部分或小数部分(不是两者); 可以省略小数点或字母e(或E)和指数(不是两者).整数部分,可选的小数点和可选的小数部分构成浮动文字的重要部分.指数(如果存在)表示要对其进行缩放的10的幂.

例如:123.456e-67,.1E1f,42.,13e3

字符串字面量

字符串文字是由双引号括起的字符序列(如2.14.3中所定义),可选地以R,u8,u8R,u,uR,U,UR,L或LR为前缀,如"......"中所示. ,R"(...)",u8"......",u8R" (...) ",u"......",uR"*(...)*","U".. .",UR"zzz(...)zzz",L"......"或LR"(...)".

encoding-prefixopt"s-char-sequenceopt"

encoding-prefixopt R raw-string

例如:"me",L"you"

布尔文字

布尔文字是关键字falsetrue.这样的文字是prvalues有类型的bool.

false
true
Run Code Online (Sandbox Code Playgroud)

指针字面

指针文字是关键字nullptr.它是一种类型的prvalue std::nullptr_t.

nullptr
Run Code Online (Sandbox Code Playgroud)

用户定义的字面

过载operator""允许使用用户定义的逻辑来解释文字.

例:

typedef double signalf;
constexpr signalf operator"" _percent( long double val) { return val / 100 ; }

std::cout  << 12.34_percent; // prints 0.1234
Run Code Online (Sandbox Code Playgroud)