求解释这个结果,谢谢。

fcly1981826ly 2011-06-29 01:17:07
#include <iostream>
using namespace std;
int
main( )
{


cout<<'777'<<endl;
return 0;
}


--------------------

为什么输出是

3618615呢?为什么?谢谢!
...全文
135 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcly1981826ly 2011-07-17
  • 打赏
  • 举报
回复
顶起来。。。。。
chenaiyy 2011-06-30
  • 打赏
  • 举报
回复
2楼正解...
Gloveing 2011-06-30
  • 打赏
  • 举报
回复
int a='777';

cout<<a<<endl;
输出就是3618615
pengzhixi 2011-06-29
  • 打赏
  • 举报
回复
An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter
literal has type int and implementation-defined value.
qingcairousi 2011-06-29
  • 打赏
  • 举报
回复
单引号是用来给char赋值的,理论上,'777'应该被赋给一个char类型的变量。然而由于'777'是3个字节,为了正确赋值,编译器找了一个int——4个字节的来容纳'777',所以cout就输出了这个int。
而"777"则是给char*赋值的,所以cout输出的是char*的内容,也就是777。
wh_liu 2011-06-29
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int
main( )
{


cout<<'777'<<endl;
return 0;
}

等于你要输出'7'所在的地址

我是这样理解的
就想叫yoko 2011-06-29
  • 打赏
  • 举报
回复
cout << 777 << "777" << endl;
Gloveing 2011-06-29
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int
main( )
{
int a='777';

cout<<a<<endl;
return 0;
}
你的程序等价于
野男孩 2011-06-29
  • 打赏
  • 举报
回复
超过4个字节就不是这样的了,因为int是4字节,具体的解释可以看看C++标准的相关章节。
野男孩 2011-06-29
  • 打赏
  • 举报
回复
'777'被当成了整形处理,'7'的ascii是0x37

所以cout << '777' 被处理成 cout << 0x373737

0x373737也就是3618615
fcly1981826ly 2011-06-29
  • 打赏
  • 举报
回复
还是不明白。。。。。
Proteas 2011-06-29
  • 打赏
  • 举报
回复
wcout 输出是多少?
应该是溢出了。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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