【发布时间】:2015-09-17 03:23:22
【问题描述】:
我阅读了 strcmp 的描述,它说“测试字符串是否相等。如果 string1 小于 string2,则返回负数,如果两个字符串相等,则返回零,如果 string1 大于 string2,则返回正数”来自http://www.cprogramming.com/fod/strcmp.html。但是,我遇到了一个给我正数而不是负数的程序。谁能解释为什么它是正输出而不是负输出?
using namespace std;
int f(int n) {
if (n < 0) {
return -1;
} else if (n == 0) {
return 0;
} else {
return 1;
}
}
int main(int argc, char* argv[]) {
char a[10];
char b[10];
int n;
strcpy(a, "4");
strcpy(b, "345");
n = strcmp(a, b);
cout << f(n) << endl;
}
【问题讨论】:
-
如果
f()点只是为了混淆视听?无论如何,"4"在字典上大于“345”。 -
哦只是想让它更简单
-
真的吗?为什么不直接打印出
n? -
您在比较字符串,而不是数字。 “345”在“4”之前,就像在字典中“abc”在“b”之前一样。如果要比较数字,则必须先解析字符串。
-
按字典顺序?我需要查一下这个词,但是谢谢