VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 585|回复: 10

[求助] while语句中条件的自增自减问题

[复制链接]
07_avatar_middle
在线会员 Acher陈 发表于 2018-2-2 00:45:10 | 显示全部楼层 |阅读模式
学习continue语句和break语句时没太搞懂。具体看了后搞懂了但是一个例子里面的使用while的条件的自增和自减把我弄懵了。请帮我分析一下执行的步骤。谢谢!

#include <stdio.h>
int main()
{
        int i = 5, n = 0;
        while (i--)
        {
                /*i--;*/
                if (i == 3)
                        // return;
                        // break;
                        continue;
                else if (i == 1)
                        n = 6;
        }
        n = n + 5;
        printf("i=%d\n", i);
        printf("n=%d\n", n);
        return 0;
}
执行结果是
i=-1;
n=11;

当时我考虑的是,如果i--在整个while语句的最后,思考了一下,这样程序会一直在i=3的循环里面出不来。
然后再vs2013里面使用断点,观察每一步局部变量值得变化,发现i的值的变化是在进行到if (i == 3)语句变化的,我再次将i--移动到了这条语句前面,但是执行结果是:
i=0;
n=11;
这样的结果显然和原程序的不同,所以我一直想不通的有一下几点:
1、到底i--这条语句是在什么时候变化的。
2、计算机执行while语句时是先执行while语句,然后再将初始i(上次循环i的值)带入判断while是否进行循环然后再自减。或者是根据语句,while执行,判断条件是马上进行i的自减,然后用自减的值进行判断。


最后表达歉意,我在提问板块不能发帖,又来这儿了。嘿嘿




上一篇:菜单栏边框怎么做出来的
下一篇:C语言黑客教程的问题(为什么教程的后门只能在局域网实现功能,在不同网络的计算机不能

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

01_avatar_middle
online_admins admin 发表于 2018-2-2 01:46:00 | 显示全部楼层
楼主还是没理解变量 i 的值 和表达式 i-- 的值的区别。
当进入 while 循环时,先计算 i--,当 i-- 表达式执行完之后,i 变量本身的值已经被减1了,同时表达式 i-- 的值仍是变量 i 减1之前的值。如果 i-- 表达式的值变成 0 了之后,while 不会再进入循环的。

另外,楼主为什么无法在提问版块发帖,提示什么错误了吗?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
在线会员 954624 发表于 2018-2-2 15:12:02 | 显示全部楼层
研究 i++  ++i  没多大意义

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

43_avatar_middle
在线会员 kang 发表于 2018-2-2 16:47:58 | 显示全部楼层
根据输出结果就可以推出计算过程了。
先执行while语句,后执行i--;
注意:while(0),就是不再执行循环了,但依然会计算i-- 。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
ico_lz  楼主| Acher陈 发表于 2018-2-2 23:10:39 | 显示全部楼层
954624 发表于 2018-2-2 15:12
研究 i++  ++i  没多大意义

主要我是想一步一步搞清楚来,基础扎实点。while语句中条件的自增自减问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
ico_lz  楼主| Acher陈 发表于 2018-2-2 23:10:59 | 显示全部楼层
kang 发表于 2018-2-2 16:47
根据输出结果就可以推出计算过程了。
先执行while语句,后执行i--;
注意:while(0),就是不再执行循环 ...

好的,谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
ico_lz  楼主| Acher陈 发表于 2018-2-2 23:12:48 | 显示全部楼层
admin 发表于 2018-2-2 01:46
楼主还是没理解变量 i 的值 和表达式 i-- 的值的区别。
当进入 while 循环时,先计算 i--,当 i-- 表达式 ...

意思就是进入while, 然后i--,同时i的值还是上一轮i的值,但是i--后的值才是判断的值吗?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
ico_lz  楼主| Acher陈 发表于 2018-2-2 23:14:12 | 显示全部楼层
admin 发表于 2018-2-2 01:46
楼主还是没理解变量 i 的值 和表达式 i-- 的值的区别。
当进入 while 循环时,先计算 i--,当 i-- 表达式 ...

提问板块是我拖动验证码不能完成验证。所以不能发帖。一直都是什么验证码被啥吃了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

43_avatar_middle
在线会员 kang 发表于 2018-2-8 10:53:23 | 显示全部楼层
while(i--)
是先判断while(i),然后再i--;
这个可以做个断点调试验证下;也可以设置i=1时,while(i--)是否能进入循环体里也可以验证出来了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
ico_lz  楼主| Acher陈 发表于 2018-2-8 14:53:37 | 显示全部楼层
kang 发表于 2018-2-8 10:53
while(i--)
是先判断while(i),然后再i--;
这个可以做个断点调试验证下;也可以设置i=1时,while(i--)是 ...

非常感谢,用断点看了。懂啦

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-20 16:47

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表