我的程序中定义了以下内容
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 ++中有效
答案 0 :(得分:3)
在外圈dir=~
$( echo "ls -l $dir" > test.sh )
从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
}
}
变量中的负值 in 循环,分别打破循环:
row