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