putchar 和整个代码是如何执行的? [关闭]

Posted

技术标签:

【中文标题】putchar 和整个代码是如何执行的? [关闭]【英文标题】:How does the putchar and whole of the code gets executed? [closed] 【发布时间】:2019-06-26 09:48:04 【问题描述】:

我希望前 3 次迭代的代码干运行能够理解。 代码的输出是:abcdbcdbcdbcdbc........(无限次)

我知道 for 循环是如何工作的,也知道了 char。我没有空运行,因为我不明白 for 循环中的第三个参数是否会增加。

#include <stdio.h>
int main()

    for (putchar('a');putchar('b');putchar('d'))
    putchar('c');

    return 0;

【问题讨论】:

putchar('b') - for 循环的这一部分应该有一个条件应该为假(如果你希望循环中断)。 1) 你检查过for 循环是如何工作的吗? 2) 你检查过putchar做了什么吗?如果没有,那就去做吧。如果有,你有什么不明白的? 到目前为止你的努力是什么?您是否尝试过试运行?你的结果是什么,你的预期输出是什么,这与你观察到的有什么不同? 您可能想阅读these class notes。 @4386427 以前我无法理解这段代码是如何工作的,但现在我明白了。 【参考方案1】:

以您为例:

初始声明: putchar('a')

条件表达式: putchar('b')

重复步骤: putchar('d')

循环语句: putchar('c')

现在用上面的流程图映射你code

由于putchar 返回它已打印的字符b 也满足true 条件,因此您的for 循环运行无限时间。


归因: http://www.equestionanswers.com/c/for-while-do-while-loop-syntax.php

【讨论】:

我的问题太宽泛了。这个问题很短。【参考方案2】:

putchar 总是返回你输入的字符。例如,putchar('a') 返回'a'。考虑到这一点,让我们看看for 循环是如何工作的:

for (init_clause;cond_expression;iteration_expression) 循环语句

init_clauseputchar('a')。这会打印一次a,因为init_clausefor 循环的开头被评估一次。

cond_expressionputchar('b')。每次循环运行都会检查这一点,这就是为什么它总是打印b。因为它每次都返回'b',所以循环永远不会停止。只有在cond_expression 返回0 或以其他方式退出循环(例如通过break)时,循环才会停止。

iteration_expressionputchar('d'),因此每次都会打印dloop_statementputchar('c'),打印c

结果是打印一次a,然后是无限量的bcd。之所以按此顺序获取它们,是因为在循环的每次运行中,它首先检查cond_expression,执行loop_statement,然后执行iteration_expression

【讨论】:

以上是关于putchar 和整个代码是如何执行的? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PyQt - 如何在不关闭对话框窗口的情况下停止执行

extjs 如何关闭当前整个网页

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)是啥意思

关闭 Android 应用程序 [重复]

putchar()和getchar()使用解析

putchar()和getchar()使用解析