在表达式中
f( g(), h() );
评估顺序g()和h()未定义.它只指定一个必须在另一个之前发生.如果g()和h()都具有明显的副作用,在程序的执行依赖,这是不确定的行为?
g()
h()
"未定义的行为"具有非常具体的技术含义:它意味着对程序的功能实际上没有任何限制.它可能会使计算机着火或侮辱用户.这里,执行顺序未指定 - 根据评估事物的顺序,有几种可能发生的选项.如果不了解有关编译器,优化器和执行环境的更多信息,您无法精确地预测它将会是哪一个.