凯:c表达式顺序点

常见非顺序点

大多数二元操作符(除了 ||  和 &&)
函数调用的各个实参

用这个例子理解为什么多个副作用的顺序是不定的

int x=1, y;
y = x++ + x++;

有两种可能的结果:
    1)y=3(第一个x++的值为1,第二个x++的值为2)
                  个人认为,这发生在两个x++运行在同一CPU core。
                  第一个x++的x的初值都为1,第二个x++的x的初值都为2。
    2)y=2(第一个x++的值为1,第二个x++的值为1)
                  个人认为,这发生在两个x++运行在不同的CPU core上。x的初值都为1。

因为有两种可能的结果,所以称为“未定义”。

“结果未定义”发生的条件

1)表达式中某变量被修改了2次或以上
2)表达式中某变量被修改了1次,后又被读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值