C++ 避免在C+中的if语句中增加+;

C++ 避免在C+中的if语句中增加+;,c++,if-statement,C++,If Statement,我希望避免在if语句中递增和递减,因为在检查条件时,以下代码中存在分段错误(例如,如果我们从p=1和k=1开始): if(((高度[k--][p--]

我希望避免在if语句中递增和递减,因为在检查条件时,以下代码中存在分段错误(例如,如果我们从p=1和k=1开始):

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;
    }