Tag: function calls

未定义的行为:尝试访问函数调用的结果时

以下编译并打印“string”作为输出。 #include struct S { int x; char c[7]; }; struct S bar() { struct S s = {42, “string”}; return s; } int main() { printf(“%s”, bar().c); } 显然,这似乎引发了一个未定义的行为 C99 6.5.2.2/5如果尝试修改函数调用的结果或在下一个序列点之后访问它,则行为未定义。 我不明白它在哪里说“下一个序列点”。 这里发生了什么?