无法将数组中的负值转换为正值?

时间:2018-11-15 14:22:30

标签: c++ arrays function loops absolute-value

如果数组中有任何整数转换为正数,我需要返回false / #include <iostream> using namespace std; int convertArray (int a[],int sizeofArray ) { bool v = false; for (int i=0; i<sizeofArray; i++) { if(a[i]<0) { abs(a[i]); v = true; } cout << i << " " << a[i] << endl; } return v; } int main() { int b[5] = {1,-2,3,5,2}; cout << convertArray (b,5)<<endl; return 0; } ,我可以返回true或false,但是我不能将负整数转换为正数?

typedef struct macaddress {
    char macaddress[6];
}macaddress;

macaddress* macaddresses = (macaddress *)calloc(1, sizeof(macaddress))
sourcehost(eth_header, macaddresses, doesntmatter);

void sourcehost(struct ether_header * eth_header, char * macaddresses, int VariableToIncrement) 
    bool present;
    int prevsize = sizeof(macaddresses) / sizeof(macaddress);
    for (int i = 0; i < prevsize; i++) {
        if (strcmp(macaddresses[i], eth_header->ether_shost)) {
            present = true; 
        }
    }
}

5 个答案:

答案 0 :(得分:3)

声明:

abs(a[i]);

仅执行转换,但是值丢失,因为您没有重新分配给相应的数组元素,并且该参数未通过引用传递。您应该具有:

a[i] = abs(a[i]);

答案 1 :(得分:2)

您的专线

abs(a[i]);

计算位置i处的数组“ a”的绝对值,并将其丢弃,因为它将保持不可取。

你必须写

a[i] = abs(a[i]);

或更简单地

a[i] = -a[i];

将负数a [i]转换为正数。

答案 2 :(得分:1)

abs仅返回其参数的绝对值,然后您可以通过不使用它来忽略它。相反,您应该将此值重新分配回数组的元素:

a[i] = abs(a[i]);

答案 3 :(得分:0)

您只获得绝对值,而没有设置它, 您需要做a[i] = abs(a[i]);

答案 4 :(得分:0)

只需在从数组中检索数据时进行转换,这将对您有所帮助!

arr[i]= Math.abs(arr[i]);