2015-05-21 4 views
0

У меня есть некоторые проблемы с циклом петли C++, вот мой код:Непонимание петли в C++?

for (int ii = 1; ii <= 4; ii++) 
    { 
     if (ii==1) 
     { 
      ro = 4; 
      ratio = 0.85; 
     } 
     if (ii == 2) 
     { 
      ro = 6; 
      ratio = 0.8; 
     } 
     if (ii == 3) 
     { 
      ro = 8; 
      ratio = 0.9; 
     } 
     if (ii == 4) 
     { 
      ro = 10; 
      ratio = 0.5; 
     } 

     function(ro,ratio); 

     if (ii = 1) 
     { 
      cir4 = cir.clone(); 
      k4 = k3.clone(); 
     } 
     if (ii = 2) 
     { 
      cir6 = cir.clone(); 
      k6 = k3.clone(); 
     } 
     if (ii=3) 
     { 
      cir8 = cir.clone(); 
      k8 = k3.clone(); 
     } 
     if (ii = 4) 
     { 
      cir10 = cir.clone(); 
      k10 = k3.clone(); 
     } 
    } 

мой function(ro,ratio) работает отлично, который каждая пара ро-отношение вне цикла for и возвращает различный результат Mat cir=function(ro , ratio) которой каждая пара (в этом случае cir4 # cir6 # cir8 # cir10), но когда я ставлю его внутри цикла, он всегда возвращает тот же результат: cir4 = cir6 = cir8 = cir10 = function(ro = 4 , ratio = 0.85)

Я понятия не имею, почему. Не понимаю, как работает цикл for на C++?

+3

используйте переключатель – kylecorver

ответ

12

Используйте == не = для сравнения.

У вас это правильно в первом блоке if операторов, но не на втором.

+0

спасибо, сэр, и что произойдет со вторым блоком 'if'? Они просто запускаются последовательно из 'cir4 = cir.clone()' в 'k10 = k3.clone()'? –

+2

Да. 'if (i = 1)' будет устанавливать 'i' в 1, а затем ввести блок, так как результат присваивания отличен от нуля. Это произойдет для всех четырех блоков, выполнив все восемь назначений и оставив «i» со значением 4, так что цикл завершится немедленно. –

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