A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天在做练习的时候发现一个很“有趣”的结果,但是,仔细分析后,你会觉得很有意思。接下来,你不用vs2010或者vs2008进行运行这段程序,而是通过你的分析,看看你分析的结果和运行出的结果一样吗?觉得会让你惊讶!为什么吗呢?
Console.WriteLine("输出从1到9之间不能被7整除的数的总和并求出i的值");
            int sum = 0;
            int i = 0;
            while (i++<=9)
            {
                if (i%7==0)
                {
                    continue;
                }
                sum += i;
            }
            Console.WriteLine(i);
            Console.WriteLine("总和是{0}",sum);
            Console.ReadKey();



Console.WriteLine("输出从1到9之间不能被7整除的数的总和并求出i的值");
            int sum = 0;
            int i = 0;
            while (++i<=9)
            {
                if (i%7==0)
                {
                    continue;
                }
                sum += i;
            }
            Console.WriteLine(i);
            Console.WriteLine("总和是{0}",sum);
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

正序浏览
大家注意了,这两题的陷阱在于while里的判断语句,如第一题:当i=9时,i++=9,while判断<=9成立,继续循环,在循环内i的值已经是10了,循环完后再在while内判断i++,所以最后第一题i的最后值为11 ! 以上

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
i++    是后+类型 也就是先取i 的值计算 计算后 i 的值 变成 i + 1
++i   是先+类型  也就是先取 i +1  后 的值 再 计算

比如 int i = 0, j=0 ,b=2, sum1=0,sum2=0;
sum1 = i ++   +b;
sum2 = ++j +b;

结果:
i = 1;
sum1=2;
j=1;
sum2=3;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马