C程序中的困惑

标签 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;
}

最佳答案

没有。 *f2 += *f2 += ... 的位已经是未定义的行为。在没有中间序列点的情况下对同一对象进行多次修改。无需进一步查看。

关于C程序中的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3783741/

相关文章:

c - 在C99中获取右值的地址

c - 需要有关 CS50 使用 'C' 的 luhns 算法的帮助

c - 如何使用 C 在 Linux 上的线程中修复 "Error reading from socket - bad file descriptor"?

c - 在 C 中按字母顺序对字符串和结构进行排序

c - GTK+3 GUI 随机卡住(1 小时后或 20 分钟后)

无法在信号处理程序中设置信号掩码

c++ - 在 C++ 和优化中缺少返回值的不稳定行为

c++ - 算术右移给出虚假结果?

C运算符+=序列点?

c - `if (variable % 2 == 0)`时程序崩溃