2016-12-02 34 views
-5

我有以下的在我的计划多申报循环

int row; 
int col; 

for(int k = 1; k <= sizestr1; k++){ 
    for(row = k, col = 1; (row == 0 && col <= sizestr2); row-- , col++){ 

     //logic here 
    } 
} 

在调试定义,在内部循环的逻辑似乎并没有被执行。上述内循环的定义是否在C++中有效

+4

'行== 0'常是s FALSE。 –

+1

“行”永远不会获得值“0”。你的意思是写'row!= 0'而不是'row == 0'吗? –

+0

我猜在语法上有效(什么说你的编译器?)但很难理解逻辑,例如变量行。假设你有重要的警告(未初始化的变量),例如给出重要的运行时(算法)错误 –

回答

3

在外循环k1开始并向上,因此它永远不会得到0的值。内循环需要row == 0(与col <= sizestr2一起)。所以内部循环的条件永远不会满足,因此内部循环体不会被执行。

条件表达式确定当环路是允许来执行,所以需要测试,如果该变量是非负,以允许循环:

int row; 
int col; 

for(int k = 1; k <= sizestr1; k++){ 
    for(row = k, col = 1; row => 0 && col <= sizestr2; row-- , col++){ 

     //logic here 
    } 
} 

作为替代可以测试row内部变量为负值环路的分别中断环路:

int row; 
int col; 

for(int k = 1; k <= sizestr1; k++){ 
    for(row = k, col = 1; col <= sizestr2; row-- , col++){ 
     if(row < 0) 
      break;  // terminate the inner loop 

     //logic here 
    } 
} 
+0

是的,我错过了,我想在行值小于0时终止内循环 – RRP

+0

@RRP请参阅扩展的答案。 – CiaPan