如何使用gdb进入while循环?

Sha*_*ash 0 c gdb

我有一个while如下循环。

while (*d++ = *sc++)
Run Code Online (Sandbox Code Playgroud)

因为我希望深入了解指针,所以我想进入循环while并了解while循环如何使用指针。

我用过stepgdb但它没有while完全进入循环。有没有办法进入循环并理解while一步的操作。

alk*_*alk 5

*绑定比 postfix 更紧密++++右侧将最后应用,因此:

while (*d++ = *sc++)
Run Code Online (Sandbox Code Playgroud)

是相同的:

while (*d = *sc)
{
  d++;
  sc++;
Run Code Online (Sandbox Code Playgroud)

修改在 中更好地被追踪gdb

更新:

不要像这样的 OP 编码!

虽然它可能看起来很酷,并且证明你很聪明。普通人脑很难解析,容易出错?这是我们不想要的,是吗?

最好采用上面提出的更清晰的替代方案,让编译器打乱代码。

  • @Lundin,是 Keringham 在他的书中写到的吗“经验丰富的 C 程序员会更喜欢...`while (*s++ = *t++);`...虽然乍一看这似乎很神秘,但符号的便利性相当大,并且应该掌握这个习惯用法,因为你会在 C 程序中经常看到它。” (稍微解释一下,“C 编程语言”,第 5.5 节)? (3认同)