我有以下的在我的计划多申报循环
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++中有效
我有以下的在我的计划多申报循环
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++中有效
在外循环k
从1
开始并向上,因此它永远不会得到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'常是s FALSE。 –
“行”永远不会获得值“0”。你的意思是写'row!= 0'而不是'row == 0'吗? –
我猜在语法上有效(什么说你的编译器?)但很难理解逻辑,例如变量行。假设你有重要的警告(未初始化的变量),例如给出重要的运行时(算法)错误 –