while 带有 post-increment 运算符的哨兵变量

while sentinel variable with post-increment operator

有什么区别:

while(*s++ != '[=11=]') {}

while(*s != '[=12=]') {
   s++;
}

s 是一个 char *。后者工作正常。但在第一个循环结束时,*s 不等于 '[=16=]'.

如果

 while(*s++ != '[=10=]') {}

递增是在条件检查语句本身中作为 post 递增运算符完成的。在这种情况下,值的变化(增量)是运算符计算值后的副作用。因此,在使用该值(相比之下)后,s 会递增。

另一方面,

while(*s != '[=11=]') {
   s++;
}

增量发生在条件块内的post-增量,只有条件为真时才会执行。一旦条件被评估为假,s 就不会递增。