我写的代码和这个代码哪个更好呢?从阅读角度和运行效率上来看!
我的代码:#include<stdio.h>
#include<stdlib.h>
int mycmp(char *s1, char *s2)
{
while(*(s1++) == *(s2++) && *s1 != '\0')
;
return *(s1-1) - *(s2-1);
}
int main(void)
{
char s1[] = "abc";
char s2[] = "Abc";
printf("%d\n",mycmp(s1,s2));
return 0;
}
原本代码:
#include<stdio.h>
#include<stdlib.h>
int mycmp(char *s1, char *s2)
{
while(*s1 == *s2 && *s1 != '\0') {
s1++;
s2++;
}
return *s1 - *s2;
}
int main(void)
{
char s1[] = "abc";
char s2[] = "Abc";
printf("%d\n",mycmp(s1,s2));
return 0;
}
在阅读角度和运行效率方面比较这两段代码:
你的代码:
int mycmp(char *s1, char *s2)
{
while(*(s1++) == *(s2++) && *s1 != '\0')
;
return *(s1-1) - *(s2-1);
}
原本代码:
int mycmp(char *s1, char *s2)
{
while(*s1 == *s2 && *s1 != '\0') {
s1++;
s2++;
}
return *s1 - *s2;
}
从阅读角度上来看,原本代码更易于理解。原本代码使用了花括号 {} 和缩进,使得逻辑更加清晰。而你的代码在 while 循环中使用了分号 ;,这可能导致阅读者对代码逻辑的理解产生困扰。
从运行效率上来看,两个版本的代码在大多数情况下应该具有相似的性能。但是,你的代码在某些情况下可能会略微快一些,因为它在循环中同时增加了指针 s1 和 s2。然而,这种微小的性能差异在实际应用中可能并不明显。
综合来看,我建议使用原本代码,因为它更易于阅读和理解。如果你希望进一步优化性能,可以在保持代码可读性的前提下进行调整。
页:
[1]