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

0 c++ if-statement

例如:

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

if (array[myInt-6]==2)
   cout << true << endl;
else
   cout << false << endl;
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*ore 10

因为未定义的行为未定义.任何事情都可能发生,包括出现在工作中.

编译器和运行时不需要诊断.你必须自己负责检查.

  • @bobnargot no,未定义的行为意味着C++中完全不同的东西.它不是一个未定义的变量,它是标准未定义的程序行为,因此任何结果或行为都是正确的. (3认同)