新手求教关于宽字符问题

sglhsay 2013-06-22 11:47:39
很好奇宽字符的关键字为何不用wchar而用wchar_t? 还有表示宽字符或宽字符串时用L包裹,这个L又是哪个单词的第一个字母??
...全文
242 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
橡木疙瘩 2013-06-24
  • 打赏
  • 举报
回复
新的标准里面又出现了char16_t和char32_t……_t已经成了一种习惯了,为什么不干脆再加一个char_t呢? 此外字符串常量也增加了U"..."、u"..."、u8"...",以及R"...",学C语言时学的“常量尽然以数字、双引号或单引号开头”的规则完全失效了。我一直很奇怪为什么不设计为象数值型常量那样放在后面: 35l、0x87u、3.1415926l
赵4老师 2013-06-24
  • 打赏
  • 举报
回复
王八的屁股——龟腚(规定)
sglhsay 2013-06-23
  • 打赏
  • 举报
回复
引用 3 楼 u010936098 的回复:
在没有宽字符类型的时代,只能用typedef自定义一个(一般定义为short)。按照习惯,自定义的类型都叫xxxx_t,于是wchar_t出现了。
这个习惯在没有宽字符的概念的时候挺好吧应该,但现在的我们难道不希望用wchar来表示宽字符更合情合理吗?怕是没办法了,真可惜
sglhsay 2013-06-23
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
这个在 BS 的 <<C++程序设计语言>> 里说的很清楚: L 表示 Larger Character wchar_t 这个名字是从 C 语言里面继承过来的.
这本书还没买,知道是大作,现在还在学c语言,最喜欢这种把名字解释的清清楚楚的书了,这样的才叫教材嘛
赵4老师 2013-06-23
  • 打赏
  • 举报
回复
L由编译器负责解释。
赵4老师 2013-06-23
  • 打赏
  • 举报
回复
L由编译器就、负责解释。
橡木疙瘩 2013-06-23
  • 打赏
  • 举报
回复
在没有宽字符类型的时代,只能用typedef自定义一个(一般定义为short)。按照习惯,自定义的类型都叫xxxx_t,于是wchar_t出现了。
你怎么了熊吉 2013-06-23
  • 打赏
  • 举报
回复
这个是未解之谜
www_adintr_com 2013-06-23
  • 打赏
  • 举报
回复
这个在 BS 的 <<C++程序设计语言>> 里说的很清楚: L 表示 Larger Character wchar_t 这个名字是从 C 语言里面继承过来的.
飞天御剑流 2013-06-23
  • 打赏
  • 举报
回复
引用 楼主 sglhsay 的回复:
很好奇宽字符的关键字为何不用wchar而用wchar_t? 还有表示宽字符或宽字符串时用L包裹,这个L又是哪个单词的第一个字母??
因为当初K&R发明C的时候,并没有考虑国际化的问题,所以K&R C仅定义了char,而没有宽字符; 到了C标准化的时候,国际化因素被加入标准规范,因此有了宽字符需求,但C仅将wchar定义为某个typedef的类型名称,即wchar是由其它类型实现的,按照标准C的命名习惯,就成了wchar_t了; 不过,由typedef定义出来的wchar_t存在类型安全性问题,只是由于C没有重载,所以在C中尚不会有什么大问题,但到了C++,重载的出现使类型安全性成了必须要解决的问题,因此在C++中wchar_t被改为独立类型,不再由typedef定义,但名称沿用C的习惯。
www_adintr_com 2013-06-23
  • 打赏
  • 举报
回复
要用 wchar 很简单啊, 加一个 typedef wchar_t wchar; 就完了.
AnYidan 2013-06-23
  • 打赏
  • 举报
回复
lz 知道为什么叫c语言吗?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧