代码之家  ›  专栏  ›  技术社区  ›  Bite Bytes

C中允许这种函数调用吗

  •  3
  • Bite Bytes  · 技术社区  · 7 年前
    char* p = init();
    p = foo(p);        /* this one */
    

    函数 foo 原型:

    char* foo(char* p);
    

    允许打电话吗 那样的话,还是落在 未定义的行为 类别

    2 回复  |  直到 7 年前
        1
  •  9
  •   John Bode    7 年前

    是的,这是定义良好的-在函数参数的求值和函数调用之间有一个序列点。

        2
  •  6
  •   gsamaras a Data Head    7 年前

    这样叫foo是允许的,还是属于未定义的行为类别?

    也就是说,顺序是有保证的(参数求值和函数调用之间存在一个序列点)。


    你可能把它和 不连续的修改或某事。