【问题标题】:Anyone know why and how this works? What will be printed [duplicate]任何人都知道为什么以及如何工作?将打印什么[重复]
【发布时间】:2022-01-02 11:28:33
【问题描述】:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}


谁能解释一下这是如何工作的? 为什么打印 32? 当我卸下刹车时,它是无限循环并打印 12?

【问题讨论】:

  • 遵循调试器中的执行路径?
  • 你知道 for 循环是如何工作的吗?您是否阅读了 printf 的文档以查看它返回的内容?你有答案。

标签: c for-loop printf


【解决方案1】:

首先,printf ("3") 被执行,所以它打印出3。然后printf("2")被执行,打印2。因为printf() 的返回值是它打印的字符数,在本例中为1,并且因为1 是一个非零值,所以循环在正文中继续。正文中的第一条语句是break,意思是退出循环。所以循环终止。所以屏幕上的结果是32

【讨论】:

    【解决方案2】:

    printf("3") 在 for 循环初始化时被调用。 调用printf("2") 来查看循环迭代是否应该终止。

    printf() 返回它打印的字符数,在这两种情况下都是 1,所以循环决定执行。

    循环体只是break,因此循环在该点终止,程序结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 2015-03-08
      • 2021-06-27
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多