任何人都知道为啥以及如何工作?将打印啥[重复]

Posted

技术标签:

【中文标题】任何人都知道为啥以及如何工作?将打印啥[重复]【英文标题】: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 的文档以查看它返回的内容?你有答案。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于任何人都知道为啥以及如何工作?将打印啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

你啥时候以及为啥要封课?

每个网址中 r'^ 图标的实际含义是啥?任何人都可以详细解释他的意思是啥以及这有多重要[重复]

sql子查询!基本 sql 查询中 ANY 运算符的问题。不知道为啥在我的查询中需要它以及它将如何工作?

这里的#auto 属性是啥以及为啥需要它

Looper 的目的是啥以及如何使用它?

这两个查询为啥以及如何工作