某些常见的编程语言,尤其是C和C++,具有未定义行为的强烈概念:当您尝试执行某些操作之外的某些操作时,这会导致未定义的行为.
如果发生未定义的行为,则允许编译器执行任何操作(包括任何内容,'时间旅行'等).
我的问题是:为什么存在这种未定义行为的概念?据我所知,如果不是导致未定义的行为,使用超出其预期用途的操作会导致大量的错误,使用一个版本的编译器停止工作的程序,等等将被阻止一个编译错误.
为什么这不是事情的方式?
c c++ compiler-errors compilation undefined-behavior
c ×1
c++ ×1
compilation ×1
compiler-errors ×1
undefined-behavior ×1