我的"i"变量递增了,我不知道如何

  • 本文关键字:我不知道 变量 我的 c
  • 更新时间 :
  • 英文 :


我是一名初级程序员,在练习c-lang时遇到了一个循环问题。

这是代码:

#include <stdio.h>
#include <limits.h>
#include <string.h>
int main(void)
{
char s[5];
int lim = 5;
char c;
int t;
for (t=0;t<lim-1 && (c=getchar()) != 'n' && c != EOF;++t)
{

s[t] =c;
printf("%dn",t);
}
printf("MY t got incremented and i do not know how: %d",t);
s[t]='';


printf("%c",s[0]);
printf("%c",s[1]);
printf("%c",s[2]);
printf("%c",s[3]);
printf("%c",s[4]);

return 0;
}

输出:

0
1
2
3
4

为什么变量t增加到4?

如果我输入了足够多的字符,那么我的t值得到的最大值是3。我的循环以t值为3结束,但在我退出循环后,我的t将增加为4。我不知道这个添加发生在哪里。我是不是错过了一些显而易见的东西?

您的条件是t < lim - 1;当t3时,条件看起来像3 < 4。循环进行一次。然后在循环结束时,t经由++t递增到4。当44 < 4失败,然后退出循环,但t仍将是4

我建议您从lim的值0开始,然后是1,然后是2…依此类推,然后打印t的值。这会告诉你实际发生了什么。

欢迎来到SO!你是对的,根据你提交的代码判断,你的exit condition总是当t小于4时。为了退出循环,最终t必须递增到4。在大多数情况下,用于退出循环的任何变量都将始终大于、小于或等于退出条件。

如果您希望t是在退出循环之前的值,您必须这样减少它:

t--; 

--t;

相关内容

最新更新