为了账号安全,请及时绑定邮箱和手机立即绑定

当在多个字符上使用时,单引号在C+中会做什么?

当在多个字符上使用时,单引号在C+中会做什么?

C++
慕的地6264312 2019-06-16 16:25:45
当在多个字符上使用时,单引号在C+中会做什么?我对这个代码很好奇:cout << 'test'; // Note the single quotes.给我的输出1952805748.我的问题是:输出是内存中的地址吗?
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

这是一个多字符的文字。19528057480x74657374,分解为

0x74 -> 't'0x65 -> 'e'0x73 -> 's'0x74 -> 't'

编辑:

C+标准,§2.14.3/1-字符文字

(.)包含多个c-char的普通字符文字是多字符文字。多字符文字具有int类型和实现-defiNed值。


查看完整回答
反对 回复 2019-06-16
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

不这不是地址。这就是所谓的多字节字符。

通常,这是四个字符合并的ASCII值。

't' == 0x74; 'e' == 0x65; 's' == 0x73; 't' == 0x74;

所以0x74657374是1952805748。

但在其他编译器上也可以是0x74736574。C和C+标准都说多字节字符的值是实施定义..所以一般来说它的用途是气馁。


查看完整回答
反对 回复 2019-06-16
?
MYYA

TA贡献1868条经验 获得超4个赞

包含多个c-char的普通字符文字是多字符文字。多字符文字具有int类型和实现-defiNed值。

实现定义的行为需要由实现来记录。例如,在GCC,你可以找到它。这里

编译器一次对一个多字符常量(一个字符)进行赋值,将每个目标字符的位数所留下的前一个值移动,然后将新字符的位模式截断为目标字符的宽度。最后的位模式是给出int类型的,因此是有符号的,不管单个字符是否有符号。

检查解释本页想了解更多细节


查看完整回答
反对 回复 2019-06-16
  • 3 回答
  • 0 关注
  • 594 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信