一个简单的问题,望高手帮忙!

cloverplus 2002-09-14 08:03:02
小弟不才,发现一个奇怪的问题,不能自解,希望各位高手能帮忙.
VC++中的 '***' 代表什么??
如:
cout<<'1234'<<endl;//并未出错,出现一个奇怪的号码.
...全文
49 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloverplus 2002-09-14
  • 打赏
  • 举报
回复
谢谢alexxing(赤铸)兄讲的这么详细.我明白了!!
alexxing 2002-09-14
  • 打赏
  • 举报
回复
'1234' 不是错误的,是整数的另一种表示方法而已

普通编译器(如BC),只支持2个字符
NB 编译器(如WATCOM C),可以支持4个字符
VC 可能不支持 4 个字符,但应该支持 2 个字符
试试 cout << '12' ?

'1' = 0x31
'2' = 0x32
'3' = 0x33
'4' = 0x34

'12' = 0x3231
'1234' = 0x34333231 = 875770417
(或者 0x31323334 = 825373492)
edward0716 2002-09-14
  • 打赏
  • 举报
回复
出现这个可能性多数是:格式不对."***"可能是机器产生的随机数作为字符的ASCII码, 从而产生溢出, 因此输出为"***"等乱字符.

我的建议:如果你要输出字符串的话你必须得用双引号, 否则会出错.
一般单个字符可用单引号, 也可以用双引号.
另外,编译器也不能排除它的可能性,不过这只有百分之零点几的可能.其实,你上面的问题只要将单引号改为双引号就可以了.

以上只是我个人体会,如有不对,请您指正.多谢!
wzgtly 2002-09-14
  • 打赏
  • 举报
回复
如果编译器都不能通过,就有语法错误,对于一个错误的问题,你可以问他为什么错了,但不要把错误的强制成正确,甚至还要给出什么理由.
'1234'是错误的,它毫无意义!!!!
dsangvei 2002-09-14
  • 打赏
  • 举报
回复
我在BC3.1下不能编译:
cout <<'1234' <<endl;
error : charactor constant must be one or two char long
仅能用:
cout << '12' <<endl; //12849 ->hex :3231 -> '21'

但我在WATCOM C++ 10.6 下运行通过,输出为: 4 .
看来各个编译器对这种语法的检查都不一样。

netbian 2002-09-14
  • 打赏
  • 举报
回复
jone7318说的对
kwok_1980 2002-09-14
  • 打赏
  • 举报
回复
'1234'是825373492这样一个数,如果是'12345',你想想是多少???
还能表示吗? 一个constant可以这样大吗(int)?
jone7318 2002-09-14
  • 打赏
  • 举报
回复
‘’只能代表单个字符,其中只能放1到2个字符,在C++中用‘1234’,编译器无法解释所以输出***
cloverplus 2002-09-14
  • 打赏
  • 举报
回复
原来的程序是这样的:
#include <iostream>
using namespace std;

int main(void)
{
cout<<'1234'<<endl;
return 1;
}

结果是825373492,我只是不明白为什么会是这个数呢????
还有如果超过4个的话,编译器就显示出错,停止编译了!!!我试了很多遍都不行啊!!
kwok_1980 2002-09-14
  • 打赏
  • 举报
回复
***是指任意多个字符.(但是不超过四个)
>>怎么不会超过四个!?????
>>而且不是任意的!是固定的!不信,你自己试试吧!
kwok_1980 2002-09-14
  • 打赏
  • 举报
回复
是这个数的ASCII码!

#include <iostream>
using namespace std;

int main()
{
int a = '1234';
cout<< '1234' <<' '<< a <<endl;
return 0;
}
cloverplus 2002-09-14
  • 打赏
  • 举报
回复
***是指任意多个字符.(但是不超过四个)
请大家先编译一下再说好不好!
你们也一定会奇怪的!!!
cloverplus 2002-09-14
  • 打赏
  • 举报
回复
我不是想输出1234这几个字符,我只是想弄明白'1234'到底代表什么?
如果想输出1234,"1234"就可以了啊!
netbian 2002-09-14
  • 打赏
  • 举报
回复
""表示字符串
''表示字符
***什么意思也没有
cloverplus 2002-09-14
  • 打赏
  • 举报
回复
真的是因为'1234'我才不明白啊!!
如果我连单引号表示单个字符都不知,那我自杀好了!!!
不信你用vc编译一下,绝对无错!
Coder 青田 2002-09-14
  • 打赏
  • 举报
回复
'1234',这是什么???单引号一般只表示一个字符而已。如果你想输出1234的话 应该用双引号才对!cout<<"1234"<<endl;

69,371

社区成员

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

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