gpt4 book ai didi

我可以得到一些关于我用 C 实现的 strcmp() 函数的反馈吗?

转载 作者:行者123 更新时间:2023-12-01 22:23:16 25 4
gpt4 key购买 nike

我正在学习C。

当我尝试一些事情并收到该语言知名程序员的反馈时,我发现我学得很好。

我决定编写自己的 strcmp() 函数,只是因为我认为我可以:)

int strcompare(char *a, char *b) {
while (*a == *b && *a != '\0') {
a++;
b++;
}
return *a - *b;
}

我试图通过在 while 的条件下增加指针来让它工作,但不知道如何返回。我想要使​​用C 风格代码,在一行上完成尽可能多的事情:)

我可以从成熟的 C 程序员那里得到一些反馈吗?这段代码可以改进吗?我有什么坏习惯吗?

谢谢。

最佳答案

如果你想在 while 语句中执行所有操作,你可以这样写

while (*a != '\0' && *a++ == *b++) {}

我个人并不是这种编程风格的 super 粉丝——读者在试图理解它时无论如何都需要在心里“解压”操作的顺序(并弄清楚代码是否有错误)。内存错误在 C 中尤其隐蔽,在超出或之前覆盖内存一个字节可能会在很久以后导致各种无法解释的崩溃或错误,远离最初的原因。

现代 C 编程风格更强调正确性、一致性和纪律性,而不是简洁性。简洁的表达式功能,例如预自增和后自增操作,最初是让编译器生成更好的机器代码的一种方法,但现在优化器可以轻松地自己做到这一点。

正如 @sbi 所写,我更喜欢使用 const char * 参数,而不是普通的 char * 参数。

关于我可以得到一些关于我用 C 实现的 strcmp() 函数的反馈吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com