c++里,中文的大小比较是怎样的?
大家好,本人初学C++,使用的编译器:
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
下面代码,为何是为何输出是if的代码块?也就是说c++里,中文的大小比较是怎样的?
if ("刘备" < "曹操")
cout << "that is rightn";else {
cout << "why is thatn";
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
少年你想多了,刘备和曹操分别是两个常指针,因此该if比较的是两个静态区指针的大小,结果取决于编译器的个人爱好,这个问题你应该问你的编译器
引用来自“eel”的评论
你可以把 "刘备" "曹操" 的地址都打印出来,把字符串的编码也打出来分析一下
这。比的是const char *,C++用std::string::compare来实现吧
你可以把 "刘备" "曹操" 的地址都打印出来,把字符串的编码也打出来分析一下
没有这么写过。。。
但我估计这是比的字符串地址吧?
如果用strcmp()是比较的字符串内容
存储成tst.cc,然后:
g++ -g tst.cc -o tst.dbg
objdump -SD tst.dbg > tst.asm
然后打开tst.asm,找到你比较两个字符串的代码,应该会是这样子的:
大致的意思是说把0x400894和0x40089b两个数字扔到寄存器里比较一下,嗯,其实你自己瞅也能瞅出来,而这两个地址指向的内容则负责将这些汉字弄到内存里,当然,他们跟最后的比较毛关系没有