这种函数在C中是否允许调用

Bit*_*tes 3 c function undefined-behavior

char* p = init();
p = foo(p);        /* this one */
Run Code Online (Sandbox Code Playgroud)

功能foo原型:

char* foo(char* p);
Run Code Online (Sandbox Code Playgroud)

是允许以foo这种方式调用,还是属于未定义行为类别?

Joh*_*ode 9

是的,这是明确定义的 - 在函数参数的评估和函数调用之间存在一个序列点.


gsa*_*ras 6

是允许以这种方式调用foo,还是属于Undefined Behavior类别?

的,订单是有保证的(参数'评估和函数调用之间存在一个序列点).


您可能会因为无序修改或其他因素的副作用而感到困惑.