查看: 830|回复: 5
收起左侧

[已解决] 这么一段代码出什么错了

 关闭 [复制链接]
abc45628
发表于 2013-12-9 15:08:14 | 显示全部楼层 |阅读模式
本帖最后由 abc45628 于 2013-12-9 15:40 编辑

void real()//真正读取队列
        {
                int temp;
                int now1 = now;
                int j = 0;
                int i = 0;
                for (int i = 0; i < 10; i++)//从大到小
                {
                        for (int j = i; j < 10; j++)
                        if (iolist < iolist[j])
                        {
                                temp = iolist;
                                iolist = iolist[j];
                                iolist[j] = temp;
                        }
                }

              cout<<i;
}
这段代码跑完以后红色的 i 的值是10,为什么呢?当两个循环都跑完以后,我在循环里定义的蓝色的 i 不是应该消失了吗?
23Jia
发表于 2013-12-9 15:14:24 | 显示全部楼层
本帖最后由 23Jia 于 2013-12-9 15:22 编辑

int i = 0;
这行你在loop那里定义了,不需要再写了

int j = 0;
这行你在loop那里定义 j=i, 就算你提前设置为0,也会随着 i 改变而改变



这行跑完后: for (int i = 0; i < 10; i++), i 是从0~9,总共10位, j也是

跑完后,i =9, j=9 (因为是从0开始)

你说的消失是回归 0 吗 ?

当你再次调用real时,在loop那里重新定义为0,所以不需要写什么

abc45628
 楼主| 发表于 2013-12-9 15:30:07 | 显示全部楼层
23Jia 发表于 2013-12-9 15:14
int i = 0;
这行你在loop那里定义了,不需要再写了

在循环里定义的变量应该在循环结束的时候就要从内存中删除了吧,我说的消失就是要让蓝色的i在循环结束后不再存在这个变量,只剩下外面定义的红色的i,我的两个i作用是打算不同的,虽然我明白这样写很蛋疼
23Jia
发表于 2013-12-9 15:35:54 | 显示全部楼层
abc45628 发表于 2013-12-9 15:30
在循环里定义的变量应该在循环结束的时候就要从内存中删除了吧,我说的消失就是要让蓝色的i在循环结束后不 ...

首先你设置了 i = 0 , 然后你在循环部分再设置 i,

根据race condition, i 会被循环部分里面的 i 再次定义,也就是说,跑完循环后,i 会=9

最后cout<< i , i = 9

除非修改,不然会一直被影响到

abc45628
 楼主| 发表于 2013-12-9 15:40:26 | 显示全部楼层
23Jia 发表于 2013-12-9 15:35
首先你设置了 i = 0 , 然后你在循环部分再设置 i,

根据race condition, i 会被循环部分里面的 i 再 ...


soga,回去继续进修race condition,很感谢你的解答
23Jia
发表于 2013-12-9 15:45:51 | 显示全部楼层
abc45628 发表于 2013-12-9 15:40
soga,回去继续进修race condition,很感谢你的解答

进修啥race condition   不是厘清顺序问题吗

这是C++还是c

评分

参与人数 1经验 +7 收起 理由
woxihuan2011 + 7 感谢支持,欢迎常来: )

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-6-27 15:38 , Processed in 0.124979 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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