一道题目 求输出

manplus 2006-02-23 01:17:36
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?
cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?
cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?

以上三条输出语句分别输出什么
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸学堂 2006-02-23
  • 打赏
  • 举报
回复
这种比较和编译器有关。
有的编译
const char str3[] = "abc";
const char str4[] = "abc";
解释成为
const char *str3 = "abc";
const char *str4 = "abc";
iawenll 2006-02-23
  • 打赏
  • 举报
回复
cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?
cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?

这两个,按照编译器的默认行为,将被看成是对地址值的比较
所以可能为true,亦可能为false---------我的机上为false
可以用以下方式查看:
cout<<static_cast<void*>(str1)<<'\n'<<static_cast<void*>(str2)<<'\n';
cout<<static_cast<void*>(const_cast<char*>(str3))<<'\n'
<<static_cast<void*>(const_cast<char*>(str4))<<'\n';

最后是一个为true,没有例外。
ChenSu2008 2006-02-23
  • 打赏
  • 举报
回复
1
1
0
最后的那两个指针指向同一个地址。

64,637

社区成员

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

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