在MOOC里C语言程序设计(翁恺)10.2节第三个视频中,代码:
#include <stdio.h>
#include <string.h>
int main(int argc,char const *argv[])
{
char a[]="abc";
char b[]="abc ";
printf("strcmp=%d\n",strcmp(a,b));
printf("A-a=%d\n",'A'-'a');
return 0;
}
视频中运行结果为:
而在windows7 x64-codeblocks 13.12 with mingw中的结果为
经测试只有“0”,“-1”,“1”三种结果。这是什么原因呢?
按视频代码手写strcmp函数:
#include <stdio.h>
#include <string.h>
int mycmp(const char* a,const char* b)
{
while(*a==*b&&*a!='\0')
{
*a++;
*b++;
}
return *a - *b;
}
int main(int argc,char const *argv[])
{
char a[]="abc";
char b[]="abc ";
printf("strcmp=%d\n",strcmp(a,b));
printf("mycmp=%d\n",mycmp(a,b));
printf("A-a=%d\n",'A'-'a');
return 0;
}
则输出结果与视频结果相同。
我猜问题出在头文件<string.h>上。windows7里或者说是CB13.12的头文件与视频中mac osx有区别。下周有空的话,我借朋友的mac air来一探究竟。