请告诉我,如果字符串是数字并且数字位数相同,那么运算符对字符串的工作量是多少。这些操作符究竟如何工作?
例如,对于以下比较 -
cout<<("3" > "5")<<endl;
cout<<("31" > "25")<<endl;
cout<<("35" > "35")<<endl;
cout<<("38" > "85")<<endl;
cout<<("53" > "55")<<endl;
cout<<("36" > "35")<<endl;
cout<<("53" > "54")<<endl;
我从CodeBlocks获得的输出是 -
0
0
0
0
0
0
0
代码的行为未定义。
你输入的const char[]
文字为了比较而衰减到const char*
指针。
并且仅当指针是同一数组的一部分时,才会定义指针上的比较运算符的行为。你的不是。
如果您使用s后缀文字,例如"3"s
然后C ++ 14以后会将其视为std :: string并执行词法比较。
"3"
不是一个“字符串”,它是const
阵列的char
s。 const char
数组可以自动衰减到const char*
。指针可以与operator<
进行比较。
指针的比较只是地址之间的比较。在这种特殊情况下,您的比较会导致未定义的行为,因为指针彼此之间是不相关的(它们不指向属于同一数组的对象)。
如果你真的想按字母顺序比较C风格的字符串,请使用std::strcmp
。否则,你应该使用std::string
并依赖std::string::operator<
。