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_clause
是 putchar('a')
。这会打印一次a
,因为init_clause
在for
循环的开头被评估一次。
cond_expression
是 putchar('b')
。每次循环运行都会检查这一点,这就是为什么它总是打印b
。因为它每次都返回'b'
,所以循环永远不会停止。只有在cond_expression
返回0
或以其他方式退出循环(例如通过break
)时,循环才会停止。
iteration_expression
是putchar('d')
,因此每次都会打印d
。 loop_statement
是putchar('c')
,打印c
。
结果是打印一次a
,然后是无限量的bcd
。之所以按此顺序获取它们,是因为在循环的每次运行中,它首先检查cond_expression
,执行loop_statement
,然后执行iteration_expression
。
【讨论】:
以上是关于putchar 和整个代码是如何执行的? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章