2015-11-28 2 views
-2

У меня есть следующая проблема.Если оператор в скобках изменяет значение в векторе

У меня есть два вектора correct_data_labels.label и data_labels.label, метка vector<int >, тогда как data_labels и correct_data_labels являются экземпляром моего класса.

У меня есть метод, где у меня есть утверждение внутри. Когда я использую оператор IF, аргумент, который я использовал в круглой скобке, выполняет арифметику и меняет значение. Как видно из приведенного ниже кода: Когда я запускаю код, он заменяет значение, записанное внутри оператора IF. Так data_labels.label[row] заменяется correct_data_labels.label[row]

unsigned int num=0; 
double percentage=0.00; 

for(register unsigned int row=0;row<data_labels.label.size();row++) 
{ 
    if((data_labels.label[row]=correct_data_labels.label[row])) 
    { 
     num=num+1; 
    } 
} 

percentage = (num/data_labels.label.size()); 

Этот код написан на C++, я полагаю, другие парадигмы программирования может ответить на запрос выше тоже.

+3

'=' не '==' – Kevin

+0

Компиляция с более высоким уровнем предупреждения. –

+0

Что такое * вопрос *? –

ответ

1

Вместо оператора равенства использовался оператор назначения ===. Вы, вероятно, получил предупреждение об этом и именно поэтому у вас есть дополнительный набор круглых скобок вокруг выражения: suggest parentheses around assignment used as truth value (на мой компилятор, по крайней мере)

Заменить = с == сделать сравнение вместо задания.

+0

долгие часы программирования заставили меня забыть разницу между операторами .. Спасибо .. – TMNT

Смежные вопросы