if> = condition更改全局数组中元素的值

时间:2011-09-15 01:14:09

标签: c++ c

大家好,提前感谢您的时间,

我定义了以下全局数组

int n_inactive=0;
long cc_no_issue[4]={0};
int issue[4];

我增加值

for(size_t k=0;k<contexts.size();k++)
{
    if(issue[k]==0)
        {

            cc_no_issue[k]++;

        }
    else {
            if(cc_no_issue[k]>=20)
            {
                n_inactive--;

            }
        cc_no_issue[k]=0; 

        }


    if(cc_no_issue[k]==20)
        n_inactive++;

}

然后我使用条件if&gt; =

if(cc_no_issue[disp_context_id]>=20)

之后,我的值一遍又一遍地增加,然后条件永远不会满足,我的程序就会中止。

当我使用条件if ==

  if(cc_no_issue[disp_context_id]==20)

值保持不变。

请注意避免混淆disp_context_id是一个数字0-3

有人可以提供一些分析,说明为什么带有&gt; =条件的if语句会改变数组中元素的值

再次非常感谢。

编辑以下是我如何使用if语句

          if(cc_no_issue[disp_context_id]>=10)
        {


            contexts_left.erase(contexts_left.begin()+current_context);
            continue;
        }

编辑:以下是我使用==时的一些值  7 10 3 9 10 13 6 12  2 10 56 8  4 0 58 10  0 1 10 7  3 0 13 10 10 2 1 17  0 8 7 10  2 10 9 12  3 11 10 13  3 29 28 10  0 134 10 115  0 2 10 18  1 10 18 26

现在当我将其更改为&gt; =时  2 6904 6904 6878  2 6904 6904 6878  0 6905 6905 6879  0 6905 6905 6879  0 6905 6905 6879  0 6906 6906 6880  0 6906 6906 6880  0 6906 6906 6880  0 6907 6907 6881  0 6907 6907 6881  0 6907 6907 6881  0 6908 6908 6882  0 6908 6908 6882  0 6908 6908 6882  0 6909 6909 6883  0 6909 6909 6883  0 6909 6909 6883  0 6910 6910 6884  0 6910 6910 6884  0 6910 6910 6884  0 6911 6911 6885  0 6911 6911 6885  0 6911 6911 6885  0 6912 6912 6886

差异很明显

@Rob,Rob感谢坚持我。由于有许多头文件和数据结构,我真的无法编写类似的可编译程序。我可以试着用语言告诉你

此cc_no_issue [4] = {0};数组最初定义为0 我还为问题数组问题分配了一个数组[4]

在代码的另一个函数中,我用它来递增Issue数组的元素0-3

然后在当前函数中检查元素0-3(如果它们中的任何一个等于0)然后递增cc_no_issue数组。

然后每当cc_no_issue [k]&gt; = 20

时,我将当前元素重置为0

几行我想要在满足条件的情况下从数据结构中删除元素。 那个条件在一个while循环中

           if(cc_no_issue[k]>=10) 
              {
                use .erase to remove it from the array
                continue; 
              }

我希望有助于澄清事情。

1 个答案:

答案 0 :(得分:0)

如果context.size() > 4,您将在cc_no_issue的范围之外书写。这肯定是你的计划中止的一个原因。

您也可能超出issue的范围。如果您取消引用了不可用的地址,那也会中止您的程序。