C程序混乱

0 c undefined-behavior

给定的程序是否定义良好?

#include <stdio.h>
int main()
{
    int a=2,*f1,*f2;
    f1=f2=&a;
    *f2+=*f2+=a+=2.5;
    *f1+=*f1+=a+=2.5;
    printf("\n%d %d %d\n",a,*f1,*f2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 8

*f2 += *f2 += ...没有.这个位已经是未定义的行为.对相同对象的多次修改,没有插入序列点.无需进一步了解.

  • ...因为它在没有插入序列点的情况下两次修改对象.`*f1 + =*f2 + = ...`同样是未定义的. (2认同)