首页 > 解决方案 > C++ 调试断言失败 - Visual Studio 上的向量下标超出范围

问题描述

我的代码

while (board[x + 1][y] == '#' && x + 1 < m) x++;

这部分导致Visual Studio出现错误。但是,此代码正在网站上进行编码测试。


矢量板尺寸为 4x5。

在 x=1、y=3 时发生错误。

这是董事会状态。

[0] # # # A A
[1] # # # A A
[2] # # # # A
[3] # # # A A 

当条件为真时发生错误。

什么是问题?

标签: c++visual-studio

解决方案


正如我的评论:

while (x + 1 < m && board[x + 1][y] == '#' ) x++;

如果第一个逻辑表达式为假,那么(因为我们对它们进行 AND)第二个逻辑表达式不会被评估并且数组不会被读取到边界之外。

它与 Visual Studio 没有任何共同之处。


推荐阅读