【发布时间】:2018-07-02 09:55:27
【问题描述】:
我只是试图在代码块中执行这个程序,我得到了 0,1,-1 的输出,在其他一些编译器中我得到了结果 0,4,-1 但根据 strcmp() 的工作,我应该得到 0,4,-32 ,我无法理解为什么我在不同的编译器上得到不同的输出。
#include<stdio.h>
#include<string.h>
int main()
{
char string1[]="Jerry";
char string2[]="Ferry";
int i,j,k;
i=strcmp(string1,"Jerry");
j=strcmp(string1,string2);
k=strcmp(string1,"Jerry boy");
printf("%d %d %d \n",i,j,k);
return 0;
}
【问题讨论】:
-
标准只保证一个负返回值(表示第一个字符串按字典顺序小于第二个)、零(等于)或正(表示按字典顺序大于)。对于特定的负值和正值将是什么没有要求。
-
strcmp()的唯一要求是返回一个整数:negative 如果第一个字符串按字典顺序小于第二个字符串,zero 如果字符串相等,positive 如果第一个字符串在字典上大于第二个字符串。只有标志很重要。允许实现返回任何值(只要符号正确);这允许他们通过(可能)利用目标硬件提供的功能来选择最佳计算方式。
标签: c codeblocks c-strings strcmp