a905448839 发表于 2023-4-19 21:30:21

我写的代码和这个代码哪个更好呢?从阅读角度和运行效率上来看!

我的代码:
#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;
}

isdkz 发表于 2023-4-19 21:34:39

在阅读角度和运行效率方面比较这两段代码:

你的代码:

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]
查看完整版本: 我写的代码和这个代码哪个更好呢?从阅读角度和运行效率上来看!