首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

宽字符字面量前缀 L 是什么意思?该怎么解决

2012-09-14 
宽字符字面量前缀 L 是什么意思?咬文嚼字1,C/C++标准里没有任何解释2,Rationale 里只解释了为什么用前缀而

宽字符字面量前缀 L 是什么意思?
咬文嚼字

1,C/C++标准里没有任何解释
2,Rationale 里只解释了为什么用前缀而不是后缀

那么,L 难道就是 Literal 的首字母?或是 Large,或是 Long ?

何不用 Wide ?据说是重用已有的 long 字面量后缀字母?

有没有确切的说法

大家认为是什么

下面是引文

C99
$6.4.5 String literals
$6.4.5/2
A character string literal is a sequence of zero or more multibyte characters enclosed in double-quotes, as in "xyz".A wide string literal is the same, except pre?xed by the letter L.

C++2003
$2.13.2 Character literals
$2.13.2/1
A character literal is one or more characters enclosed in single quotes, as in ’x’, optionally preceded by the letter L, as in L’x’.

$2.13.2/2
A character literal that begins with the letter L, such as L’x’, is a wide-character literal. A wide-character literal has type wchar_t.

Rationale for International Standard Programming Languages C
$6.4.5 String literals
An L prefix distinguishes wide string literals. A prefix rather than a suffix notation was adopted so that a translator can know at the start of the processing of a string literal whether it is dealing with ordinary or wide characters.

[解决办法]
应该是 Large。 如果是Long,就不必再有wide string的叫法,而是直接用 long string了。

记得N年前开始学C时,就因为printf的f确定不了是什么意思,问老师也不知道,只让记住就这样得了。可我那时是有一个字母搞不清意思,就算不影响任何使用,也不能算完,甚至无心继续学,必须搞明白再继续,结果查了很多书才确定,虽然一开始也很自然地想到是那个词,但毕竟是猜测。不过结果这么简单的问题,却花了很大精力,如果不是幸运地在一段全英文资料中看到解释,还不知到什么时候。所以后来渐渐改了这个毛病,能跃过就跃过,不急在一时。再后来学得多了,就更觉得实在不值得了,很多费了功夫的知识,过后可能完全用不上,而生命在不停地走,不能回头的时间当中,你付出的代价,非此即彼,拿了很多不会结果的种子而放弃了另一些能结果的,观赏不错,可到该收获时没收成怎么办。说到时间,至此打住,该干正事了。
[解决办法]
L 是long 的意思,表示加在字符串字面量上表示按两倍的char存储(宽字符)
[解决办法]
是啊,就是定义了这样一个标准。1990年的Rationale for the ANSI C Programming Language这本书有提到这个前缀,但是没有说明原因。另外后续的C++11标准用的是U前缀。
[解决办法]
可能是从long value = 100L;这类用法延伸过来的
[解决办法]
个人猜测应该是long.类似于long int相对于int.
只不过long char/long string不太符合习惯所以又弄了个wchar_t...
再加之c/c++标准不规定数据尺寸,所以这个wchar_t有16位的,有32位的.
而long在c的习惯中应该只是说更大的数据,而不是指32位数据.如:long int,long double.

最终c++11又加上了u8 u U三种确定了长度的字符/字符串,现在真是乱啊
[解决办法]

探讨
引用:

在《windows程序设计》里的P26页2.2.2更宽的字符里有这么一句话。在wchar_t=L"Hello!";下面那行我找到了依据:“注意,大写的字母L(表示长整形)”这是原文。楼主可以去看《windows程序设计》第五版 珍藏版这本书上是这么介绍的。不知道还有没有别的什么依据了。能力有限,只找到了1条依据。

L"Hello!"是用2个字节表示一个字符,在3……

[解决办法]
Long,Short 长短
Wide,Narrow 宽窄
………………
  不同的C/C++语言维护者和英文资料作者,存在不同的喜好,所以常常一件事搞出很多说法,一个东西有很多名字。可见当初强调C/C++标准有多么必要和迫切,同样也可以发现这事并没因标准的制定而完全截尾,只不过不再那么严重,我们还没算深受其害。而翻译者们相对受苦更深。
  本来应该体谅的。但楼主在20楼列出的东西,呵呵……
  其实说实话,我素来不愿意去看清华出版的书,很久之前关于买书选择哪个出版社的一个讨论中,我就说了,原因不重复了,大家想买书就看看电子工业出版社的吧,至少我在某段时期常泡图书馆的时候,曾经有心地比较了一下各种出版计算机技术的出版社的书的内容质量,在至少半年多的时间里,多种同类内容的书相比,电子工业出版社有绝对的质量优势。而清华的内容和“气质(一如楼主所说的那种作派)”,我早排到最后了。一个入学考生成绩最高,就业最旺的学府,不仅是书籍,包括多媒体教学光盘,其内容质量都如幼儿园一样。也许他们自视过高,认为别人都象幼儿园的程度,所以就用幼儿园般的表现来沟通了。天才的另一半是傻瓜,这在他们身上得到了验证。

热点排行