【问题标题】:strcmp output with positive valuestrcmp 输出正值
【发布时间】: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”之前一样。如果要比较数字,则必须先解析字符串。
  • 按字典顺序?我需要查一下这个词,但是谢谢

标签: c++ strcmp


【解决方案1】:

strcmp() 比较字符,而不是数值。 “4”在字典上大于“345”,因此是肯定的结果。

【讨论】:

  • 感谢您的解释!
猜你喜欢
  • 2021-04-27
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多