c++ - 为什么 if 语句中未定义的参数不会导致段错误或其他错误?

标签 c++ if-statement

例如:

array[2]={1,2};
myInt=5;

if (array[myInt-6]==2)
   cout << true << endl;
else
   cout << false << endl;

if语句中数组中引用的值明显越界。当我编译并运行它时,我得到错误输出,这是有道理的,因为条件不正确,但我想知道为什么没有错误输出。

最佳答案

因为未定义的行为是未定义的。任何事情都有可能发生,包括看起来在工作。

编译器和运行时都不需要诊断。您必须自己处理绑定(bind)检查。

关于c++ - 为什么 if 语句中未定义的参数不会导致段错误或其他错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11632594/

相关文章:

C++ wxWidgets Code::Blocks 自定义项目 "normal"编译和 C++11 启用期间的交叉编译链接错误

c++ - 我可以使用模板在 QString 和 std::string 之间进行自动转换吗?

VBA if else 不返回正确的值

仅当变量不是 None 时才进行 if 语句比较的 Pythonic 方法

javascript - JQuery 自动完成功能适用于一个部分,但不适用于另一部分

c# - 匹配数组中的整数

C++ 抽象基类构造函数/析构函数 - 一般正确性

c++ - 二进制字符串到 C++ 中的 byte[]?

c++ - 使用默认函数参数的优点

javascript - jQuery - 如何测试链接是否锚定在同一页面上?