有时很难说这个表达式会以什么顺序被证明。他们的任何一套规则都知道我写的表达式会显示未定义的行为吗?
表达式:printf("%d %d\n", ++n, power(2,n));
很难说首先评估++ n或权力(2,n)。该行用K& R编写。但是,我觉得这个表达非常好。我假设n将递增并由函数调用幂(2,n)使用。
此外,还有A[i++] = A[j++]
这样的表达式。始终首先评估分配的右侧,并根据我看到的值将值分配给左侧。但是,这不会发生吗?表达的本质是暧昧的(完全取决于机器如何假装它)。
表达,A[i] = i++
。根据我的看法,i
将递增,该值将分配到左侧?
但上述表达方式并不像我认为的那样有效。编写表达式的可能方法是什么,因此我不会得到任何意外的结果,特别关注那些增量或减量运算符。