gpt4 book ai didi

c++ - 避免在 C++ 中的 if 语句中递增

转载 作者:行者123 更新时间:2023-12-02 09:53:13 26 4
gpt4 key购买 nike

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

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;
}
例如,第二次检查失败,k = -1。
我想检查一个二维数组的相邻元素 heights在 if 语句中,然后运行一些逻辑以防万一。
我如何优化它并通常重写它以使其看起来(和工作)更好?我没有找到任何关于它的信息。

最佳答案

正如其他人所指出的,将所有“k”和“p”变量的“k--”替换为“k-1”,将“k++”替换为“k+1”可以解决段错误。 'k+1' 是对 'k' 之后的下一个数组索引的引用,而 'k++' 在使用后会增加 'k' 的值。避免使用表达式作为参数也是一种很好的编程习惯。
https://en.cppreference.com/w/cpp/language/operator_incdec
要清理代码,您还可以通过将 '<' 替换为 '<=' 来简化逻辑 OR。

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

关于c++ - 避免在 C++ 中的 if 语句中递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62617418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com