【问题标题】:strcmp giving wrong outputs [duplicate]strcmp 给出错误的输出[重复]
【发布时间】:2020-09-15 06:58:36
【问题描述】:

所以我研究了 strcmp 返回被比较的两个字符的 asci 值之间的差异。但在我的情况下,它只给出 -1,0 或 1 的值。

#include<stdio.h>
#include<strings.h>
int main()
{
    char n1[]="Jerry";
    char n2[]="Ferry";
    printf("%d",strcmp(n2,n1));
    return 0;
}

理想情况下它应该给出 -4,但 dev cpp 给出的输出是 -1。这是为什么呢?

【问题讨论】:

  • 没关系——只需要一个正值、负值或零值;幅度未指定。你的期望是错误的。请参阅 strcmp() 上的 C11 标准。
  • strcmp 没有这样做,你被误导了。
  • 您声称:"strcmp 返回被比较的两个字符的 asci 值之间的差异。"。您是从哪里获得此声明的?
  • 这能回答你的问题吗? Is this the only return value for strcmp() in C?

标签: c strcmp


【解决方案1】:

strcmp 给出 2 个字符串之间的相对差异。

如果左边小于右边则为负

0 如果左边和右边一样

如果左边大于右边则为正

它没有给出差异的范围。

(提示:strcmp( "Hello", "Hfllo") 的值是多少?)

【讨论】:

  • 您对规范的总结很有帮助,尽管您的措辞“相对差异”可能会加剧对 OP 的误解。参考/链接到规范可能是合适的。此外,您可能会在此处找到使帖子更具可读性和暗示性的格式:stackoverflow.com/editing-help
  • 这个提示可能没有你想象的那么有启发性,因为想出一个公式来确定修辞问题的答案并不难,然后反应是“那又怎样?”。
猜你喜欢
  • 2014-04-26
  • 2016-12-29
  • 2013-08-17
  • 2016-03-22
  • 1970-01-01
  • 2012-05-22
  • 2021-07-17
  • 1970-01-01
  • 2020-09-08
相关资源
最近更新 更多