gpt4 book ai didi

c - *++*p 是可接受的语法吗?

转载 作者:太空狗 更新时间:2023-10-29 15:13:29 26 4
gpt4 key购买 nike

在 K&R 第 5.10 节中,在他们的类似 grep 函数的示例实现中,有这些行:

while (--argc > 0 && (*++argv)[0] == '-')
while (c = *++argv[0])

理解那里的语法对我来说是最具挑战性的事情之一,即使在第一次查看它几周后,我仍然必须非常缓慢地思考语法才能理解它。我用这种替代语法编译了程序,但我不确定第二行是否允许。我只是从未见过 *++ 像这样交错,但它对我来说很有意义,它编译并运行。它也不需要圆括号或方括号,这可能是我觉得它更清楚的部分原因。我只是在一个方向(从右到左)读取运算符,而不是在变量名的任一侧来回跳动。

while (--argc > 0 && **++argv == '-')
while (c = *++*argv)

最佳答案

好吧,这是让任何阅读您代码的人都去huh?!?!?!

的一种方式

因此,从可读性的角度来看,不,您可能不应该编写那样的代码。

尽管如此,它是有效的代码并且分解如下:

*(++(*p))

首先,p 被取消引用。然后递增。然后再次取消引用。


更糟的是,这一行:

while (c = *++*argv)

在循环条件中有一个赋值。所以现在您有两个副作用让您的读者头晕目眩。耶!!!

关于c - *++*p 是可接受的语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628961/

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