不同/较旧的处理器运行c ++代码是否不同? [关闭]

问题描述 投票:-3回答:1
我正在编写一个遍历2d数组的函数,如果数组中的当前元素小于其旁边的元素,那么我将1添加到我的int计数器变量中。问题是,当我在装有AMD ryzen 7处理器的Windows机器上运行代码时,它可以正常工作,并且计数器变为20(在5x5阵列上)。但是,当我在具有Intel Core i5处理器的2014 Macbook上运行它时,在MacOS和Windows 10(新兵训练营)上,使用完全相同的代码块,计数器只能达到19。这是我的循环

int counter = 0; for(int i=0; i < ROWS; i++){ for(int j=0; j < COLUMNS; j++){ if(board[i][j] < board[i][j + 1]){ counter += 1; } } }

我认为这在任何情况下都可行。
c++ processor
1个回答
2
投票
嗯,有一个像其他人所说的最小的可复制示例,我想我可以从这里看到它。

使用j+1将使索引超出范围,从而导致不确定的行为。尝试:

for(int i=0; i < ROWS; i++){ for(int j=0; j < COLUMNS - 1; j++){ if(board[i][j] < board[i][j + 1]){ counter += 1; } } }

这应该通过尽快停止来避免该问题
© www.soinside.com 2019 - 2024. All rights reserved.