user-0 提问: sizeof

回复:
user: user-0
content: 引用 5 楼 user-5的回复:还不给我分？我擦.... ‘w’是字符常量，' w'是多字符常量，注意你的那个sizeof(' w')单引号里第一个是空格，第二个是w，也就是说你的sizeof里的不是字符常量，而是多字符常量，多字符常量会被转成int类型，详见#2楼我的回复 维基百科:Multi-character constants (e.g. 'xy') are valid, although rarely useful — they let one store several characters in an integer (e.g. 4 ASCII characters can fit in a 32-bit integer, 8 in a 64-bit one). Since the order in which the characters are packed into one int is not specified, portable use of multi-character constants is difficult.  如果我说得能让你明白，请给我分.... 我不知道咋给分啊

user: user-1
content: IDE中，鼠标右键点不明白的符号 size_of，在弹出的菜单中选转到定义。

user: user-2
content: 多字符常量，和trigraph一样，属于标准里面为了面子而保留，而时至今日已经没啥用，多数编译器默认舍弃（有些额外打开开关可以用）的东西。  历史的车辙尽管有时提供经验教训，但这道辙更多的效果是扭了脚。  让我们逐渐淡忘它（们）吧，阿门。

user: user-3
content: 引用 3 楼 Infinity G 的回复:[quote=引用 1 楼 自信男孩的回复:]'w'是int类型，类型隐式提升了。你可以看一下getchar()函数原型的返回值类型都是int类型。 那么现在的’w’相当于是ASCII码是吗[/quote] 恩，'w'是ASCII

user: user-2
content: 引用 5 楼 user-5 的回复:还不给我分？我擦.... ‘w’是字符常量，' w'是多字符常量，注意你的那个sizeof(' w')单引号里第一个是空格，第二个是w，也就是说你的sizeof里的不是字符常量，而是多字符常量，多字符常量会被转成int类型，详见#2楼我的回复 维基百科:Multi-character constants (e.g. 'xy') are valid, although rarely useful — they let one store several characters in an integer (e.g. 4 ASCII characters can fit in a 32-bit integer, 8 in a 64-bit one). Since the order in which the characters are packed into one int is not specified, portable use of multi-character constants is difficult.  如果我说得能让你明白，请给我分....  楼主的问题是搞了个全角（或者其他，反正有点胖）单引号，他没有探讨多字符常量的意图。

user: user-4
content: int size = strlen(' w'); 此时编译器报错，报错信息为 无法将参数 1 从“int”转换为“const char *” 说明此时编译器将' w'看成了int。 对于strlen和sizeof的区别，请参考《C++中strlen与sizeof处理字符数组和字符指针》，希望能够帮到您！

user: user-5
content: 还不给我分？我擦.... ‘w’是字符常量，' w'是多字符常量，注意你的那个sizeof(' w')单引号里第一个是空格，第二个是w，也就是说你的sizeof里的不是字符常量，而是多字符常量，多字符常量会被转成int类型，详见#2楼我的回复 维基百科:Multi-character constants (e.g. 'xy') are valid, although rarely useful — they let one store several characters in an integer (e.g. 4 ASCII characters can fit in a 32-bit integer, 8 in a 64-bit one). Since the order in which the characters are packed into one int is not specified, portable use of multi-character constants is difficult.  如果我说得能让你明白，请给我分....

user: user-5
content: 引用 13 楼 Infinity G 的回复:[quote=引用 12 楼 user-5的回复:][quote=引用 11 楼 Infinity G 的回复:][quote=引用 5 楼 user-5的回复:]还不给我分？我擦.... ‘w’是字符常量，' w'是多字符常量，注意你的那个sizeof(' w')单引号里第一个是空格，第二个是w，也就是说你的sizeof里的不是字符常量，而是多字符常量，多字符常量会被转成int类型，详见#2楼我的回复 维基百科:Multi-character constants (e.g. 'xy') are valid, although rarely useful — they let one store several characters in an integer (e.g. 4 ASCII characters can fit in a 32-bit integer, 8 in a 64-bit one). Since the order in which the characters are packed into one int is not specified, portable use of multi-character constants is difficult.  如果我说得能让你明白，请给我分.... 我不知道咋给分啊[/quote] 好吧...年轻人你不讲武德...耗子尾汁[/quote] 我最近才在这个软件上发帖的，我不太会。。[/quote] 没事儿...  会的话给大家结一下   不会就算了

user: user-0
content: 引用 12 楼 user-5的回复:[quote=引用 11 楼 Infinity G 的回复:][quote=引用 5 楼 user-5的回复:]还不给我分？我擦.... ‘w’是字符常量，' w'是多字符常量，注意你的那个sizeof(' w')单引号里第一个是空格，第二个是w，也就是说你的sizeof里的不是字符常量，而是多字符常量，多字符常量会被转成int类型，详见#2楼我的回复 维基百科:Multi-character constants (e.g. 'xy') are valid, although rarely useful — they let one store several characters in an integer (e.g. 4 ASCII characters can fit in a 32-bit integer, 8 in a 64-bit one). Since the order in which the characters are packed into one int is not specified, portable use of multi-character constants is difficult.  如果我说得能让你明白，请给我分.... 我不知道咋给分啊[/quote] 好吧...年轻人你不讲武德...耗子尾汁[/quote] 我最近才在这个软件上发帖的，我不太会。。

user: user-5
content: 引用 11 楼 Infinity G 的回复:[quote=引用 5 楼 user-5的回复:]还不给我分？我擦.... ‘w’是字符常量，' w'是多字符常量，注意你的那个sizeof(' w')单引号里第一个是空格，第二个是w，也就是说你的sizeof里的不是字符常量，而是多字符常量，多字符常量会被转成int类型，详见#2楼我的回复 维基百科:Multi-character constants (e.g. 'xy') are valid, although rarely useful — they let one store several characters in an integer (e.g. 4 ASCII characters can fit in a 32-bit integer, 8 in a 64-bit one). Since the order in which the characters are packed into one int is not specified, portable use of multi-character constants is difficult.  如果我说得能让你明白，请给我分.... 我不知道咋给分啊[/quote] 好吧...年轻人你不讲武德...耗子尾汁

user: user-2
content: 你的引号急需减肥，否则误导性太大。  'w'什么时候都相当于ASCII码。郭靖他妈妈一直叫李萍，不分场合。  C语言而不是C++，历史上一直都说字符常量（注意我没有说型）是int型的，有好多理由但是这里空间比较窄，写不下。 让我们记住这一点即可。

user: user-0
content: 引用 1 楼 自信男孩的回复:'w'是int类型，类型隐式提升了。你可以看一下getchar()函数原型的返回值类型都是int类型。 那么现在的’w’相当于是ASCII码是吗

user: user-5
content: std::cout << typeid(' w').name() << std::endl; std::cout << typeid('w').name() << std::endl; 运行结果：

user: user-3
content: 'w'是int类型，类型隐式提升了。你可以看一下getchar()函数原型的返回值类型都是int类型。