例如:
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/