在阅读The C Programming Language时,我注意到在评估顺序的优先级部分中指出“......函数调用、嵌套赋值语句以及递增和递减运算符会导致“副作用”......”。
我试图找到一些导致未定义行为的嵌套赋值语句的示例。在书中,它指出以下是可以的:
int nl, nw, nc;
nl = nw = nc = 0;
在那个nl
, nw
, 和nc
将全部赋值0
。
然后,我遇到了这个状态:
x = y = y = z/3;
不是“推荐”。所以我的问题是,这个陈述有什么问题?分配从右侧关联,因此该语句将等效于:
x = (y = (y = z/3));
对我来说,似乎很清楚y = z/3
and x = z/3
。所以,如果是这种情况,那么任何人都可以给我一个嵌套赋值语句的例子,它可能导致未定义的行为,如果不是,你能解释为什么前面的语句是未定义的。