gpt4 book ai didi

c - 在循环内分配的变量有效,在循环外则无效。为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:16 25 4
gpt4 key购买 nike

我刚开始尝试学习 C 编程,我真的很想了解它是如何工作的。

我想编写一个程序来计算我按 ENTER、SPACE 和 TAB 的次数。以下代码有效:

    while( (text = getchar()) != EOF){

if(text == '\n')
++newlines;

if(text == ' ')
++blanks;

if(text == '\t')
++tabs;
}

但是,下面的代码不起作用:

text = getchar();

while( text != EOF){

if(text == '\n')
++newlines;

if(text == ' ')
++blanks;

if(text == '\t')
++tabs;
}

我想知道为什么当我在循环内而不是在循环外分配变量时它会起作用。

如果我在循环外分配它并在控制台中运行程序,程序会在我按下 ENTER 后停止。

最佳答案

在第一种情况下,每次循环运行时您都会获得一个新角色。 while 循环将在每次到达循环末尾时重新检查条件。在第二种情况下,您仍然每次都在检查,但值没有改变——它与您开始时的值相同。因此,如果第一个字符不是 EOF...那么...您将无限循环!

您可以通过在再次迭代之前重新更新 text 来解决第二种情况:

text = getchar();

while( text != EOF){

if(text == '\n')
++newlines;

if(text == ' ')
++blanks;

if(text == '\t')
++tabs;

text = getchar(); //added
}

关于c - 在循环内分配的变量有效,在循环外则无效。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44710237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com