Sashkinzz Asked:2023-03-27 18:51:31 +0000 UTC2023-03-27 18:51:31 +0000 UTC 2023-03-27 18:51:31 +0000 UTC 词典比较 772 string s="55", s1="5"; cout<<(s>s1);//true cout<<("55">"5");//false 为什么在不创建变量的情况下比较工作不正确? c++ 1 个回答 Voted Best Answer Chorkov 2023-03-27T19:01:23Z2023-03-27T19:01:23Z 因为表达式"55"是 类型const char*,而不是std::string。 指针比较使用字典顺序比较以外的规则。(内存地址在它们指向的位置进行比较。也就是说,这些常量字符串所在的位置。)保留此行为是为了与 C 兼容。 如果您不想创建比较string使用: cout<<("55"s>"5"s); // C++14 cout<<(string("55")>string("5") ); // до C++14
因为表达式
"55"是 类型const char*,而不是std::string。指针比较使用字典顺序比较以外的规则。(内存地址在它们指向的位置进行比较。也就是说,这些常量字符串所在的位置。)保留此行为是为了与 C 兼容。
如果您不想创建比较
string使用: