问题描述
我知道:
int b = 1,c = 2,d = 3,e = 4;
printf("%d %d %d",++b,b,b++);
导致未定义的行为。由于
在两个序列点之间多次修改任何对象是 UB。 Undefined behavior and sequence points
但我不知道:
int b = 1,e = 4;
printf("%d",b++ + ++c - --d - e--);
也是UB吗?
我认为递增/递减运算符将首先评估,因为它们之间的优先级从右到左,因为 associativity 。然后算术运算符将从左到右求值。
就是这样
(b) + (c + 1) - (d - 1) - (e)
即 1 + (2 + 1) - (3 - 1) - (4)
= (2 - 4)
= -2
对吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)