C++ 避免在C+中的if语句中增加+;
我希望避免在if语句中递增和递减,因为在检查条件时,以下代码中存在分段错误(例如,如果我们从p=1和k=1开始):C++ 避免在C+中的if语句中增加+;,c++,if-statement,C++,If Statement,我希望避免在if语句中递增和递减,因为在检查条件时,以下代码中存在分段错误(例如,如果我们从p=1和k=1开始): if(((高度[k--][p--]
if(((高度[k--][p--]<高度[k][p])| |(高度[k++][p-->==高度[k][p]))&&
((高度[k++][p++]
例如,第二次检查失败,k=-1。
我想在if语句中检查二维数组的相邻元素heights
,然后运行一些逻辑,以防它为真
我如何优化它,并通常重写它,使它看起来(和工作)更好?我没有找到任何关于它的信息。正如其他人所指出的,将所有“k”和“p”变量的“k--”替换为“k-1”,将“k++”替换为“k+1”,可能会解决分段错误。”k+1'是对“k”之后的下一个数组索引的引用,而“k++”在使用后增加“k”的值。避免使用表达式作为参数也是很好的编程实践
为了清理代码,您还可以简化逻辑OR,如其他人所指出的,将“k--”替换为“k-1”,将所有“k”和“p”变量的“k++”替换为“k+1”,这样可以解决分段错误。”k+1'是对“k”之后的下一个数组索引的引用,而“k++”在使用后增加“k”的值。避免使用表达式作为参数也是很好的编程实践
要清理代码,还可以简化逻辑OR,将“是否可以将
k--
的所有实例替换为k-1
,将k++
的所有实例替换为k+1
,依此类推?很难说该做什么,因为不清楚您希望您的程序显示什么行为。未定义的行为。例如,你能简单地用heights[k-1][p-1]
解释一下问题所在吗?通过实际执行所有这些递增或递减操作,您希望实现什么?看起来它们中的许多可以组合成一些(…)@SamVarshavchik,我想在if语句中检查二维数组的相邻元素,然后运行一些逻辑,以防它为真。@JeremyFriesner,谢谢,它确实有效。你能用k-1
替换k--
的所有实例,用k++
替换k+1
的所有实例吗?很难说该做什么,因为不清楚您希望您的程序显示什么行为。未定义的行为。例如,你能简单地用heights[k-1][p-1]
解释一下问题所在吗?通过实际执行所有这些递增或递减操作,您希望实现什么?看起来它们中的许多可以组合成一些(…)@SamVarshavchik,我想在if语句中检查二维数组的相邻元素,然后运行一些逻辑,以防它为真。@JeremyFriesner,谢谢,它确实有效。
if (((heights[k--][p--] < heights[k][p]) || (heights[k--][p--] == heights[k][p])) &&
((heights[k--][p++] < heights[k][p]) || (heights[k--][p++] == heights[k][p])) &&
((heights[k++][p--] < heights[k][p]) || (heights[k++][p--] == heights[k][p])) &&
((heights[k++][p++] < heights[k][p]) || (heights[k++][p++] == heights[k][p]))){
width[k][p] = 3;
}
if ((heights[k-1][p-1] <= heights[k][p]) &&
(heights[k-1][p+1] <= heights[k][p]) &&
(heights[k+1][p-1] <= heights[k][p]) &&
(heights[k+1][p+1] <= heights[k][p])){
width[k][p] = 3;
}