c ++处理负数

时间:2014-04-28 04:56:08

标签: c++ negative-number

在处理具有正面和负面元素的数组时遇到了一个问题。我需要将数组中的元素分类为正数还是负数,我的代码如下所示:

int main(){
    vector <int> neg;
    vector <int> pos;
    vector <int> zero;

    int a[6]={-1,0,1,2,-1,-4};

    for(int i=0; i<6; ++i){
        if(a[i]>0) 
            pos.push_back(a[i]);
        if(a[i]=0) zero.push_back(a[i]);
        if(a[i]<0) 
            neg.push_back(a[i]);
    }
}

但是,当我打印neg.size()时,它似乎是0.我无法弄清楚为什么这样......有人能给我一些暗示吗?感谢。

3 个答案:

答案 0 :(得分:4)

if(a[i]=0) zero.push_back(a[i]);

应该是

if(a[i]==0) zero.push_back(a[i]);

operator=是赋值运算符,而operator==是比较运算符。

答案 1 :(得分:1)

if(a[i]=0) zero.push_back(a[i]);

在这里,您使用赋值运算符=而不是等于运算符==。因此,a[i]会被分配到0,因此以下a[i]<0永远不会成立。

除此之外,在我看来,在这种情况下使用else if是一种更好的编码风格:

for(int i = 0; i < 6; ++i){
    if (a[i] > 0) 
        pos.push_back(a[i]);
    else if (a[i] == 0) 
        zero.push_back(a[i]);
    else if (a[i] < 0) 
        neg.push_back(a[i]);
}

答案 2 :(得分:0)

该行

    if(a[i]=0) zero.push_back(a[i]);

a[i]设置为0。在此之后,if ( a[i] < 0 )始终为false。因此,您在neg中无法获得任何内容。