c++ 为什么比较运算符< ,>,=在比较字符串时给出错误的输出?[副本]

eoigrqb6  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(215)

此问题已在此处有答案

Comparing strings lexicographically(3个答案)
5天前关闭。
我正在使用比较运算符(<,>,=)比较两个字符串。
“a”<“B”的输出在这种情况下是0。

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. cout<<("a" < "a")<<endl;
  6. cout<<("b" < "a")<<endl;
  7. cout<<("a" < "b")<<endl;
  8. return 0;
  9. }

输出-

  1. 0
  2. 1
  3. 0

但是为什么当我只比较“a”<“b”时,输出会改变呢?

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. // cout<<("a" < "a")<<endl;
  6. // cout<<("b" < "a")<<endl;
  7. cout<<("a" < "b")<<endl;
  8. return 0;
  9. }

输出-1
这是SS-
[1st输出] https://i.stack.imgur.com/rHqzM.png
[2nd输出] https://i.stack.imgur.com/IrUEx.png
我现在很困惑!!pls任何人都可以帮助我这一点

5fjcxozz

5fjcxozz1#

你不是在用定义良好的不等式运算来比较std::string对象。您正在将string literals与未指定的内存位置进行比较。因此,<不会返回您期望的结果:
无前缀字符串文字的类型是const char[N],其中N是字符串[..]的大小,包括null终止符。

相关问题