加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

了解C中的循环

发布时间:2020-12-16 10:32:05 所属栏目:百科 来源:网络整理
导读:我很难在C中找出以下简单的for循环代码. int j=20;for(int i=0,j; i=j ; i++,j--) printf("i = %d and j = %d n",i,j); 打印输出为 i=0 and j=2i=1 and j=1 为什么它不以j = 20开始而是打印j = 2并在j = 1之后停止. 但是当我使用这段代码时 int j=20;for(in
我很难在C中找出以下简单的for循环代码.

int j=20;
for(int i=0,j; i<=j ; i++,j--)     
    printf("i = %d and j = %d n",i,j);

打印输出为

i=0 and j=2
i=1 and j=1

为什么它不以j = 20开始而是打印j = 2并在j = 1之后停止.

但是当我使用这段代码时

int j=20;
for(int i=0,j=20; i<=j ; i++,j);

它开始正常

i=0 and j=20 upto ... i=9 and j= 11

有什么东西我错过了吗?

解决方法

你是.在for构造中声明j会创建一个新的(作用域)j,其值与外部不同.如果你没有初始化它,你会得到分配时在内存中发生的任何垃圾.

像这样的变量称为“自动”变量,并在程序的堆栈上分配.如果需要,可以分配更多的堆栈空间.当它们超出范围时(实际上当函数返回时),通过将它们全部弹回来清除它们.

当需要下一位自动存储时,会发生同样的事情,然后您可以获得在堆栈中留下的任何位模式作为新变量值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读